Skip to main content
Sometimes a creative is set up by hand: a seller’s ad operations team pastes it into their ad server, or you give a publisher a tag sheet. Whoever does it needs Apostra’s trackers with the media buy and package ids already filled in. A tracker template carries {MEDIA_BUY_ID} and {PACKAGE_ID} as text, and no ad server fills those, so impressions and clicks from a copied template cannot be attributed to your buy. The campaign creative read returns the trackers to traffic for each package the creative runs in. They are the same bytes Apostra sends that buy’s seller when it syncs the creative.

Read them

Read the creative with its campaign:
The creative carries two fields:
Serve-time macros such as {CACHEBUSTER} stay in the URLs. The ad server fills them when the ad serves. Only a campaign creative read carries these fields. Reading the creative by its advertiser, searching creatives, and saving a creative do not return them.

Which media buys and packages

There is one row for each package a seller reported the creative assigned to, in each of the campaign’s media buys that has been submitted to its seller and is not finished, canceled or archived. A draft media buy is not listed. Each other submitted media buy is in placementTrackersPending, with the reason it has no row: An empty placementTrackers means there is nothing to traffic yet. When the trackers could not be read, both fields are null and the rest of the creative is still returned; read it again.

What is not listed

Third-party trackers you added to the creative, and the playback trackers (start, quartiles, complete) of a video Apostra hosts, are not listed. They stay on the creative.

How this differs from AdCP

AdCP 3.3 returns trackers on a creative’s package assignment too (trackers and landing_page_url on assigned_packages[] in list_creatives and get_media_buys). Those are templates, kept as the seller accepted them, and they leave out the creative’s own trackers. The trackers to traffic are the creative’s own Apostra trackers for one package, with Apostra’s ids filled in. Each row uses AdCP’s own shapes for its values.