Seed your pixel with past conversions
Send the conversions you already have from the last 28 days to a new Koast pixel, so it starts with history instead of from zero.
A new pixel has no history, so your Koast ad account has nothing to learn from on day one. Seeding fixes that. You upload the leads, sign-ups and sales you already have from the last 28 days, and Koast sends each one to the pixel as an event on the date it happened. The pixel starts warm instead of from zero.
Before you start
- This is for Koast ad accounts, which are provided through our partner Whop. Make one the active ad account first.
- Put the pixel on your site as well. Seeding gives it a history, and the pixel on your site keeps it fed. See Set up the Koast pixel.
- You need a list of past conversions with an email address or a phone number for each one.
- View Only members can see the seeding history, but they can't upload a file or send.
Prepare your file
Koast reads an Excel file (.xlsx) or a CSV file (.csv), up to 10 MB and 20,000 rows. To start from the template, open Settings, then Pixel, then the Backfill tab, and select Download template. It downloads pixel-seeding-template.csv, a CSV file with only this header row, so you can paste your data under it:
event_name,event_id,event_time,value,currency,email,phone,first_name,last_name,external_id,city,state,postal_code,country,action_source,url,ip_address,user_agent,anonymous_id,fbclid,fbp,fbc,utm_source,utm_medium,utm_campaign,utm_content,utm_termColumn order doesn't matter, and Koast ignores columns it doesn't know. The file must have the event_name, event_id and event_time columns, and email or phone. In an Excel file, Koast reads the tab named Events, or the first tab when there's no Events tab. Put one conversion on each row and leave a cell blank when you don't have that data.
| Column | Needed | What to put in it |
|---|---|---|
event_name | Required | What happened: purchase, lead, schedule, submit_application, contact, complete_registration, view_content or add_to_cart. Any other name becomes a custom event. |
event_id | Required | Your own ID for this one conversion, such as an order number, a deal ID or a form submission ID. Never reuse one. |
event_time | Required | When it happened, in UTC, like 2026-09-18T14:32:11Z. Use the real time, not the time you made the file. |
email, phone | One of them on every row | As the customer typed it. Phone numbers with the country code, like +15125550137. |
value, currency | For purchases | value is the amount, like 149.00, and must be above 0 for a purchase. currency is a three-letter code, like usd, and is needed whenever there's a value. |
first_name, last_name, external_id, city, state, postal_code, country | Recommended | The more of these you fill in, the more people the pixel can match. external_id is your own customer ID. state and country are two-letter codes. |
action_source, url, ip_address, user_agent | Recommended | Where it happened (usually website), the full page URL with its query string, and the visitor's IP address and browser from their original visit. |
anonymous_id, fbclid, fbp, fbc, utm_source to utm_term | Optional | Click IDs, cookies and UTM parameters, if you stored them. anonymous_id is the visitor ID from the _wuid cookie, and it's the strongest match there is. |
Koast also reads 2026-09-18 14:32 and 2026-09-18 as times, and real Excel date cells. It treats all of them as UTC.
What gets dropped
Koast checks every row before anything is sent and drops the rows that would be refused:
- Older than 28 days. The 28 days are counted from now, not from when you made the file.
- No email or phone. Every row needs one of them. Send them in plain text: Whop drops hashed emails and phone numbers.
- A missing
event_name,event_idorevent_time, or a time Koast can't read. - A purchase with no value, a value that isn't a number, or a value without a currency.
- A repeated
event_id. The first row with that ID is kept and the others are dropped. - The example row (
EXAMPLE-DELETE-ME) that some seeding templates start with. Delete it before you upload. If any of its example values are left in other rows, such ascrm_8842, Koast ignores them.
Leave out sales that went through Whop checkout. Whop already counts those, so sending them again counts them twice.
Seed from the Backfill tab
Open Settings, then Pixel, then the Backfill tab.
Under Seed past conversions, drop your file on the box, or select Choose file. Nothing is sent yet.
Read the review. Ready to send is how many events will go out, Dropped how many rows won't, and Event dates the range they cover. Dropped rows gives the reason for each drop. Preview shows the first rows as they'll be sent, with emails, phone numbers and names partly hidden, and counts each event name in the file.
Under Send as, pick how the events are named. Keep the file's names sends each row under its own
event_name. Standard event sends every row as the event you choose from the list, and Custom name as a name you type. If your file logsquiz_completedbut your campaigns optimise for leads, choose Standard event, then Lead.Under Send to, tick every Koast ad account you want to seed. One file can seed up to 10 ad accounts.
Select the send button. It counts the events and the ad accounts, for example Send 386 events to each of 2 accounts. Koast confirms with Sending started, and the jobs appear under History.
If you upload a file and don't send it, Koast deletes it after 24 hours. Upload it again when you're ready.
If Too old within 48h isn't 0, send soon. Those rows turn 28 days old in the next two days, and after that they're dropped. If you send every row as purchase, rows without a value are dropped too, and the review updates to show it.
Sent events can't be removed
A seeded event is a real conversion on your ad account, and it can't be removed from the pixel once it's sent. Check the review, Send as and the ad accounts before you send.
Follow the progress
Sending runs in the background, so you don't have to wait for it. Close Settings or keep working, and come back to the Backfill tab to check on it. Each ad account gets its own line under History, with the file, the event name, when it started and who started it. To see one ad account's jobs, pick it in the All accounts list next to History.
| Status | What it means |
|---|---|
| Queued | Waiting to start. |
| Sending | Going out now, for example 204 of 386 processed. |
| Done | Every event was sent. |
| Done with failures | Some events were refused. Open the line with the arrow at its end to see why, and how many. |
| Nothing accepted | Every event was refused. Open the line with the arrow at its end to see why. |
| Failed | The job couldn't run. The reason is shown under the line. |
When a job needs a look, the Backfill tab shows how many next to its name.
A row that turned 28 days old between your upload and its turn to be sent is counted as too old by send time and isn't sent.
About 10 minutes after they're sent, seeded events show up in Whop's stats and on the Events tab of the Pixel page, counted on the dates they happened. A custom name shows under Custom events. See Track and test your pixel events.
Seed from Slack or Telegram
You can also seed a pixel from the Koast bot, in the Slack channel or Telegram group you share with the Koast team. The bot runs the same checks as the Backfill tab and posts the summary in the chat.
The chat has to be linked to your Koast account first, and the Koast team does that for you. If it isn't linked yet, the bot answers with this, so ask us to link it:
In Slack
Post the file in the channel, then send /koast seed. The bot picks up the newest
.csvor.xlsxfile in the channel. You can also attach the file to a message that mentions the bot, like@Koast seed.Read the summary the bot posts: how many rows are ready to send, what was dropped and why, the event names, the dates, and a numbered list of the Koast ad accounts you can seed.
Send it. /koast seed send all seeds every ad account in the list, and /koast seed send 1,2 seeds the ones you number. Add
asand an event name, like /koast seed send all as lead, to send every row as that event.
In Telegram
Send the file with /seed as its caption, or reply /seed to a file that's already in the group.
Use the buttons under the summary. Pick the ad accounts, then Keep file names or the event to send every row as, then the send button, like Send 386 events to 2 accounts.
Only the person who started a seed, or the Koast team, can confirm it.
After you send
The bot answers Seeding started right away. When sending is done, it posts the result in the same chat: how many events each ad account got, and how many failed or were too old by send time. To check on a seed before then, send /koast seed status in Slack or /seed status in Telegram. To drop a seed you haven't sent, send /koast seed cancel or /seed cancel.
Track and test your pixel events
Use the Events card on the Pixel tab to see which events fire and how often, fire test events, and define your own custom events.
Server-side conversions
Send conversions from your server to the Koast pixel with a server-side key, so ad blockers and cookie rules don't hide them.