In cash on delivery, a "purchase" reported by Meta, TikTok, Google or Snapchat is only an order someone placed. It is not money: the order can still be cancelled at confirmation, refused at the door or returned. To judge an ad, you need the orders it really brought in, what happened to them, and what they cost you. That is what connecting your ad accounts to Cashod gives you.
Why are platform "purchases" misleading for COD?
Ad platforms count a conversion when the pixel fires on your thank-you page. For a prepaid store, that moment is the sale. For a COD store, it is the start of a process: a confirmation call, shipping, delivery, and only then cash collected by the carrier.
Between those steps, orders drop out. Some customers never answer, some cancel, some refuse the parcel. None of that is visible inside the ad manager, so two campaigns with the same reported ROAS can have very different results in your bank account. If one campaign attracts impulse orders that rarely get delivered, the platform will still tell you it is your best performer.
The fix is not a better pixel. It is joining your ad data with your order data, and judging each campaign by delivered orders and profit.
How do you connect Meta, TikTok, Google and Snapchat to Cashod?
In Cashod you connect each ad account with OAuth (you sign in to the ad platform and approve access), or by pasting an access token. Once connected, your campaigns, ad sets and ads sync every 10 minutes with their spend, impressions, clicks and conversions.
All four platforms are supported for reporting and control: Meta Ads, TikTok Ads, Google Ads and Snapchat Ads. You can see every account side by side instead of opening four ad managers.
How are real COD orders matched to ads?
Cashod attributes orders to ads from the UTM parameters and click IDs that arrive with the order. When the UTM parameters carry the ad ID, Cashod walks up from the ad to its ad set and its campaign. Click IDs from Meta (fbclid), Google (gclid), TikTok (ttclid) and Snapchat are read as well.
In practice, that means one thing to check on your side: your ad URLs should carry UTM parameters, ideally with the ad ID filled in by the platform's dynamic URL parameters. Once that is in place, every order that comes in from your store carries its source, and each campaign gets its own list of real orders.
You can also link ads to products, which helps when one product is pushed by several campaigns on different platforms.
What does profit per campaign actually mean?
For each campaign, Cashod puts the ad platform's numbers next to your order funnel: orders attributed, confirmed, delivered, returned and cancelled, with confirmation and delivery rates. Profit is then calculated from your own data:
- Profit = revenue − ad spend − cost of goods.
- ROAS = revenue ÷ ad spend, based on attributed orders rather than pixel purchases.
- ROI = the return after spend, shown as a percentage.
This is where decisions get easier. A campaign with a modest platform ROAS but a high delivery rate can be your real winner. A campaign with a flattering platform ROAS and a poor delivery rate may be losing money on every order. If you want to test your margins before you spend, try the COD profit calculator.
Can you control campaigns and budgets from Cashod?
Yes. From Cashod you can pause or activate campaigns, ad sets and ads, and change their budgets. The change is pushed to the ad platform, so you act on the same screen where you see the profit, instead of copying numbers between tabs.
How do automatic ad rules work?
Automatic ad rules are available for Meta, TikTok and Snapchat. Google Ads is supported for reporting and manual control, but not for automatic rules.
The building blocks of a rule
- Level: campaign, ad set or ad.
- Conditions: a metric, a time window from the last 5 minutes up to lifetime, and an operator such as greater than, less than, between or contains. All conditions of a rule must match.
- Metrics: 44 metrics, including spend, CPC, CPM, CPA, CTR, conversion rate, ROAS, frequency, days since creation, name contains, status and video and engagement metrics. You can also build your own formula metrics from existing ones.
- Actions: pause, enable, increase or decrease the daily or lifetime budget by a percentage or a fixed amount, or just send a notification.
Safety controls and schedule
Each rule can have a maximum budget cap, a minimum budget floor, a cooldown between actions on the same item and a daily action limit. A dry run shows what the rule would do without touching anything. Rules can run continuously, in custom time windows or once, and can be checked as often as every 10 minutes. Every run is logged, so you can see what was changed and why.
One honest note: rule conditions read the metrics synced from the ad platform. Use the profit per campaign view to decide your thresholds, for example the CPA at which a campaign stops being profitable once cancellations and returns are counted.
Four example rules you can adapt
The numbers below are placeholders. Replace them with thresholds from your own margins and currency.
1. Cut ad sets that burn money
At ad set level: if spend over the last 3 days is greater than 300 and CPA over the last 3 days is greater than 80, pause the ad set.
2. Scale campaigns that hold up
At campaign level: if ROAS over the last 3 days is greater than 3 and spend over the last 3 days is greater than 200, increase the daily budget by 15%. Add a maximum budget cap and a 24-hour cooldown so it cannot run away.
3. Flag tired creatives
At ad level: if frequency over the last 7 days is greater than 3.5 and CTR over the last 7 days is less than 0.8%, notify only. You decide whether to replace the creative.
4. Stop ads that never convert
At ad level: if days since creation is greater than 2, spend today is greater than 150 and conversions today equal 0, pause the ad. The age condition gives new ads time to learn.
Start each new rule in dry run for a few days, read the log, then switch it on.
How does the Meta Conversions API help COD stores?
For orders coming from Shopify, Cashod can send COD events to Meta through the Conversions API: order placed, confirmed and delivered, with hashed customer data. You choose whether the Purchase event fires when the order is placed or when it is delivered. Sending Purchase at delivery gives Meta a signal that matches real sales instead of raw orders. This works for Meta only, and for Shopify orders only. See the Shopify integration for setup.
Frequently asked questions
Can I create automatic rules for Google Ads?
No. Google Ads accounts sync into Cashod and you can pause, activate and change budgets manually, but automatic rules are available for Meta, TikTok and Snapchat only.
What do I need for attribution to work?
UTM parameters on your ad URLs, ideally carrying the ad ID, and orders that reach Cashod with those parameters or with a click ID.
Can I test a rule before it touches my ads?
Yes. Dry run evaluates the rule and logs what it would have done, without changing anything on the ad platform.
Ready to see which ads really pay? Read more on Cashod advertising, then choose a plan and connect your first ad account.