Skip to main content
A CSV campaign is the best way to send personalised bulk messages when each recipient needs different variable values — order numbers, appointment times, tracking links, etc.
CSV campaigns use the same approved templates as standard campaigns. You’re only changing how recipients and variables are supplied, not how the message is built.

When to use a CSV campaign

Order or shipping updates

Each row has a different order number, tracking link, and delivery date.

Appointment reminders

Per-customer time, clinic location, and doctor name.

Exam or event invites

Individual seat numbers, venue details, or QR codes.

One-off imports

Recipients who aren’t in your contact list yet but need a single message.

Step 1 — Prepare your CSV

Your CSV must include a column for the phone number (with country code) and one column for each template variable. Column headers can be any text — you’ll map them in the next step.

Example

For a template body like:
Hi {{1}}, your order #{{2}} shipped today. Track it here: {{3}}
Your CSV might look like:
phone,firstname,order_id,tracking_url
+14155551234,Alex,A-1001,https://ship.co/t/1001
+14155555678,Priya,A-1002,https://ship.co/t/1002
+442079460958,Sam,A-1003,https://ship.co/t/1003
Every phone number must include the country code (+1, +44, +91…). Numbers without it will be rejected.
Save your CSV as UTF-8 — especially if your messages contain non-English characters or emojis. In Excel: Save As → CSV UTF-8.

Step 2 — Start a CSV campaign

From the sidebar, go to Campaigns → CSV Campaign.
CSV campaign screen
1

Pick a template

Choose an approved template — same as a standard campaign.
2

Upload your CSV

Drag the file onto the drop zone, or click to browse. Xobito parses the file and shows a preview of the first few rows.
3

Map CSV columns to template variables

For each template variable ({{1}}, {{2}}…) pick the CSV column that supplies its value. The phone-number column is mapped separately.
4

Confirm the recipient count

Xobito shows how many rows were valid, how many were skipped (invalid number, missing required variable, duplicate), and the total estimated cost.
5

Send or schedule

Click Send Now to dispatch immediately, or toggle Schedule and pick a future time.

Rate limiting and delivery pacing

Xobito automatically paces CSV sends to stay within:
  • Meta’s per-second rate limit for your phone number (varies by tier).
  • Your 24-hour messaging limit (1K / 10K / 100K / unlimited).
Large CSVs are processed in the background. You can leave the page and come back — the campaign keeps running on Xobito’s queue.
Large CSVs typically complete in 20–60 minutes depending on your Meta tier. You’ll receive a notification in Xobito when it finishes.

Tracking per-row delivery

Open the campaign details page to see the status of every single row:
StatusMeaning
QueuedWaiting in Xobito’s send queue
SentHanded off to Meta
DeliveredReached the recipient’s device (single grey tick → double grey)
ReadRecipient opened the message (double blue tick — only if they have read receipts on)
FailedRejected by Meta — reason shown per row
You can export a CSV of results with the delivery status of every row — useful for reconciling with your own systems.

Handling skipped rows

If Xobito skips rows during upload, you’ll see a downloadable errors.csv with the original row plus an error message. Common reasons:
Missing country code, letters in the number, or fewer digits than required. Fix the row and re-upload just the corrected rows as a new campaign.
A template variable column is blank for this row. Either fill it in, or remove the row.
The same number appears more than once. Xobito keeps the first occurrence and flags the rest.
The recipient previously unsubscribed. They cannot be re-messaged until they opt back in by sending you a new message.

Tips for large CSVs

Keep files under 50 KB per campaign — split larger lists into multiple sends.
Validate phone numbers in Excel or Google Sheets before uploading.
Test with a 2–3 row file first to verify the mapping is correct.
Schedule large CSVs for off-peak hours to keep your inbox manageable.

Next

Schedule a campaign

Queue your CSV send for a specific date and time.

Track performance

See delivery, read, and failure stats.