Home › Meta ads destination_type error

Meta Marketing API · 2026

The Meta destination_type error, decoded

You hit “invalid destination type,” or worse, a campaign that publishes clean and never delivers. Both mean the same thing: your objective and conversion location don’t go together. Here’s the mapping, the ON_AD trap, and the fix.

✓ No credit card  ·  ✓ 5 free campaigns/month  ·  ✓ Dashboard, Google Sheets & your AI assistant


Short answer

A destination_type error means the conversion location you chose (website, app, Instant Form, Messenger, WhatsApp, or calls) is not valid for the campaign objective you set. Meta either rejects the create call or accepts it and silently fails to deliver. The fix is to match the destination to an objective that supports it, or change the objective to one that supports the destination.

How it shows upWhat it meansWhere to fix it
destination_type error on createObjective + conversion location not allowed togetherCampaign / ad set
Publishes fine, never deliversAPI accepted an invalid pairing silentlyPre-flight
Leads with no form (ON_AD)No valid on-ad destination to serveAd set

If you build one campaign by hand, Ads Manager usually blocks the bad pairing. Via the API, a duplicate, a sheet, or an AI assistant, it often doesn’t — which is where this error hides.

What Meta is actually telling you

01

What does the destination_type error mean?

The destination_type field is how Meta’s Marketing API records the conversion location of an ad set — the place your ad sends people, such as a website, an app, a Messenger or WhatsApp thread, an Instant Form, or a phone call. An “invalid destination type” or destination_type error means the conversion location you chose is not allowed for the campaign objective you set.

In plain terms: the objective and the destination do not go together. Meta either rejects the create call outright, or — worse — accepts it and then silently refuses to deliver. The fix is always the same shape: match the destination to an objective that supports it.

02

Which objective and conversion location combinations are valid?

Each objective supports only a specific set of conversion locations. This is the mapping that trips people most often. Use it to translate the error back into a setting you can change.

ObjectiveConversion locations it supportsCommon invalid pick
SalesWebsite, App, Website+App, MessagingInstant Forms
LeadsWebsite, Instant Forms, Messaging, Calls, AppReach / impressions goals
EngagementMessaging, Video views, Post engagement, Calls, On-pageWebsite purchase as the only path
AwarenessReach, brand awareness, video viewsInstant Forms
TrafficWebsite, App, Messaging, CallsInstant Forms

The exact allowed values move over time — Meta changed several pairings in late 2025 and again in early 2026. Treat this as the shape of the rule, and validate against the live API before you rely on any single row.

03

Why does it sometimes fail silently instead of throwing the error? Silent

This is the part that makes destination_type so expensive. Building a campaign by hand in Ads Manager, the interface usually stops you — the dropdown for an unsupported destination is greyed out. But when campaigns are created through the API, duplicated, imported from a sheet, or launched by an AI assistant, that guardrail is gone. The API will often accept the invalid pairing, return success, and then quietly never deliver.

So you see it two ways: a hard destination_type error at create time (annoying, but at least visible), or no error at all and a campaign that sits at zero spend. Both have the same root cause.

destination_type = ON_AD

04

What is destination_type = ON_AD, and when does it break?

ON_AD is the destination value Meta uses for on-ad experiences like Instant Forms — the lead form opens on the ad itself rather than sending the user to a website. It is perfectly valid in the right combination and a silent killer in the wrong one.

The failure we see most: an Engagement or website-traffic setup carrying destination_type = ON_AD without a form actually attached, or paired with an objective that does not support an on-ad form. The create call succeeds, the campaign goes Active, and it can never produce a result because there is no valid on-ad destination for it to serve. Nothing in Ads Manager flags it.

Why this one costs real money

Because it publishes clean, the campaign looks live on every dashboard. Spend either sits at zero or, in mixed batches, climbs on the campaigns that were built correctly while the ON_AD-broken ones quietly contribute nothing. On a multi-campaign launch you often do not notice until you reconcile results per campaign days later.

Adbloop matches destination_type to each campaign’s objective at build time and blocks the invalid pairings — including ON_AD without an attached form — before the create call is ever made.

Adbloop FIX #104, #108 · reproduced on live ad accounts, Meta Marketing API v25.0
05

How do I fix the destination_type error when creating campaigns in bulk or via the API?

Three steps. First, read the error as an objective-destination mismatch, not a bug — it is telling you the pairing is disallowed. Second, either change the conversion location to one the objective supports, or change the objective to one that supports the location you need. Third, if you launch in volume, stop fixing these one error at a time: validate the full objective-to-destination chain for every row before submitting the batch.

That last step is the difference between catching one bad row in a preview and discovering a week later that a third of a launch never delivered.

Related reading: why Meta ads silently fail (the full diagnostic) and Active but not spending.

Never see destination_type again

You should not have to memorize which objective allows which destination — the rules change every quarter. Adbloop carries all 108 documented Meta API fixes and validates every objective-to-destination pairing before the campaign is created, from a dashboard, Google Sheets, or Claude and ChatGPT. Invalid combinations are caught at build time, not discovered in your spend report.