The proof-of-delivery checklist for sponsored posts

A working checklist for what 'proof of delivery' actually means on a sponsored post, six steps, three minutes per post, and the verification bundle you keep for three years. Free download.

A phone showing a sponsored Instagram post with a checklist on a notepad and a coral pen on a warm cream surface

Most small brands treat “proof of delivery” on a creator deal as a vibe check. The creator sends a screenshot of the post, the brand glances at it, says “looks great!” and releases the final payment. Three weeks later the post is gone, taken down by the creator, taken down by the platform, or quietly archived without notice, and the brand has no record that the deal ever produced anything.

That used to be a small problem. In 2026, with the FTC actively fining brands (not creators) for disclosure failures, and with Meta and TikTok aggressively pruning branded content that misses their tagging rules, the cost of a sloppy proof-of-delivery process has gone up. A lot. The fine on a single sloppy disclosure now averages well into five figures. The takedown rate on miss-tagged branded content has roughly doubled in the last 18 months.

This post is a working checklist, the actual one I send brand founders to use on every deal. It takes about three minutes per post to run through, and it has saved the brands I work with a meaningful amount of money in disputes, takedowns, and FTC near-misses. The printable version is at the bottom of this post.

What “proof of delivery” actually has to prove

Proof of delivery on a sponsored post needs to establish six facts, with timestamped evidence for each:

  1. The post went live on the agreed platform, in the agreed format.
  2. The post was disclosed correctly (branded-content tool + visible #ad in caption).
  3. The agreed creative elements are present (the product on-screen, the code visible, the link in bio).
  4. The post is still live as of the verification timestamp (not just at the moment of posting).
  5. Any associated Stories or pinned Highlights are also live and disclosed.
  6. The tracking mechanism is working (UTM links resolve, the discount code is active).

A single screenshot proves exactly one of those things, the second one, partially. That’s why “screenshot of the post” isn’t proof of delivery. It’s a starting point.

The six-item checklist, in order

1. The live URL, captured as a URL, not just an image

The first thing the creator should send is the canonical permalink to the post:

  • instagram.com/reel/...
  • tiktok.com/@handle/video/...
  • youtube.com/shorts/...

Not a screenshot. A URL.

Why: a URL is verifiable today, tomorrow, and 30 days from now. A screenshot is verifiable only at the moment it was taken. If the post comes down quietly, the URL will 404 and you’ll know within an hour of your next verification check. The screenshot will still look just as live as ever.

Store the URL in whatever system you use to track deals, Stripe metadata, a Notion database, a Google Sheet, your CollabBook deal page. Any of them work. Just don’t store only screenshots.

2. The disclosure check, with a screenshot of the right view

Disclosure has to be verified in two places: the platform’s branded-content / paid-partnership tool (the “Paid partnership with [brand]” label at the top of the post), AND #ad clearly visible in the caption, not buried after a wall of other hashtags.

The screenshot you want is the expanded caption view on a mobile device, in airplane mode if possible (so no recommendation-engine UI sneaks into the frame). On Instagram, that’s after the “more” tap. On TikTok, that’s the full caption modal. Both should clearly show:

  • The branded-content / paid-partnership banner at the top, naming your brand
  • The full caption with #ad in the first 1–2 lines, not at position 17

If either is missing, the deal is not delivered yet. This is the line in the contract that says “Brand will not release final payment until disclosure is confirmed”, use it. Creators fix disclosure issues in roughly five minutes when you ask. The contract language for this clause is in what to put in a creator contract (and what to leave out).

Edge case worth knowing: Instagram’s branded-content tool occasionally fails to render the banner for ~24 hours after a creator first activates it on a new brand partnership. If the banner isn’t visible but the creator can prove they enabled the tool (settings screenshot), give it 24 hours before treating it as a disclosure failure. If it’s still missing at T+24, treat it as a failure and ask the creator to re-toggle.

3. The creative-element check, against the brief

Pull up your original brief and verify, line by line, that the required elements are present:

  • Product shown on-camera within the first 5 seconds? (or whatever your brief specified)
  • Discount code visible on-screen as text overlay, not just spoken?
  • Link in bio updated to your landing page?
  • Caption mentions the code in plain text (so it’s searchable)?
  • Any prohibited elements (competitor mentions, off-brand audio, unauthorized claims) absent?

This is a 60-second pass. Don’t skip it.

The most common failure here in 2026 is creators using a trending audio you didn’t authorize for whitelisting, which means you can technically not run the post as a paid ad even though it’s organically performing. Catch it at proof of delivery, not after you’ve already approved the $3K boost. (And if your brief didn’t explicitly call out the audio-rights question, fix the brief. See writing a brand-creator brief that doesn’t waste anyone’s time for the language.)

4. The “still live” verification at T+24 hours

This is the step almost no brand runs, and it’s the one that catches the most problems. Re-open the URL exactly 24 hours after posting and verify:

  • The post is still publicly accessible (not archived, not deleted, not restricted)
  • The disclosure is still in place (caption not edited, branded-content tag not removed)
  • The view count is incrementing (not zero, which would suggest a shadow-ban or a private-account issue)

24 hours is the right window because most accidental takedowns and quiet caption edits happen in the first day, after the creator has read the comments and decided to “clean up” something. If the post made it past 24 hours intact, it usually stays intact.

Automate this if you can. A simple cron-checked HTTP GET that flags any deal URL starting to return a 404 or a “this content isn’t available” page is one of the highest-ROI pieces of infrastructure a small brand can build. The CollabBook beta does this automatically; if you’re rolling your own, a 20-line Node script and an Airtable webhook will get you there.

The most common thing the T+24 check catches in my dataset: creators editing the caption to remove the #ad after the post lands, “because the comments were getting weird.” That’s a brand-side FTC liability the moment it happens. The check catches it the next day, you ask politely, they put it back. No incident.

5. Stories and Highlights, separately

If the brief included Stories or a pinned Highlight, those are separate deliverables and need separate verification:

  • Stories: capture the live Story URL while it’s still in the 24-hour window, plus a screenshot. Verify the link sticker resolves to your landing page (actually tap it, don’t just look at it).
  • Highlight: confirm the Highlight is pinned with the agreed name, the order of Stories within the Highlight is correct, and the Highlight cover matches what was briefed.

The number of times I’ve watched a Stories deliverable get forgotten in the proof-of-delivery pass, because the brand was looking at the Reel and forgot the Stories were part of the deal, is genuinely surprising. Use a checklist; don’t rely on memory. The number of Stories deliverables that quietly never go live and the brand pays for anyway is in the 5–10% range across the deals I audit.

6. Tracking-mechanism live-fire test

Last step, 30 seconds: actually use the link and actually try the code. Open the link-in-bio on your phone in a private browsing window, click through, and confirm the UTM resolves to your landing page with the parameters you expected. Then add a product to cart and try the discount code at checkout to confirm it’s active and the discount applies.

Two-thirds of “the creator’s post didn’t drive any sales” complaints I get pulled into turn out to be a broken UTM or a discount code that expired one day before the post went live. Catch it on day one, not on day fourteen when your attribution report makes no sense.

The most embarrassing version I’ve seen: a brand’s discount code was case-sensitive in the backend (“DORCAS25” worked, “dorcas25” did not), the creator typed it in the caption lowercase, the brand’s reviewer didn’t notice, and the entire campaign attributed at 0%. Live-fire testing catches this in 30 seconds.

What you keep, and for how long

For every deal, the artifact you store at the end of the proof-of-delivery pass should include:

  • The live URL
  • Two timestamped screenshots: one of the post itself, one of the expanded caption with disclosure visible
  • A second screenshot from the T+24 check
  • A short note confirming the live-fire test passed (link resolves, code works)
  • The creator’s payout reference / receipt
  • The signed contract for the deal

Keep this bundle for at least 3 years. The FTC’s statute of limitations on unfair practices is 3 years; most platform-side disputes resolve in 6 months. Three years covers both with margin. Cheapest insurance you’ll ever buy.

Store it in a structured way, one folder per deal, named YYYY-MM-DD-creatorhandle/, all artifacts inside. When someone asks for the bundle two years later (and they will, for the one deal that turned into a dispute), you want to be 30 seconds from sending it, not a Slack search-and-rebuild expedition.

The version you actually run

In practice, the proof-of-delivery pass takes about three minutes per post if you have a checklist, and twenty minutes if you don’t, because you forget steps and have to backtrack. The brands I see scaling past 10 deals a month all converge on the same pattern: a checklist (this one or one like it), a template for the verification bundle, and an automated 24-hour “is the post still up” check.

The escrow side of this, funds release tied to disclosure confirmation, is what makes the whole flow self-enforcing. Without escrow, the creator already has the money and the proof-of-delivery pass is theater. With escrow, every step of the checklist is a gate the creator wants you to pass. See how escrow changes the math on brand-creator deals for why first-pass disclosure compliance jumps under that model.

If you remember three things

  • A screenshot is not proof of delivery. A URL is. Always capture the URL; the screenshot is one of six artifacts, not the artifact.
  • T+24 is the highest-ROI step nobody runs. Most quiet caption edits and takedowns happen overnight. Automate the check if you can.
  • Live-fire test the link and code. 30 seconds. Catches the broken-UTM / expired-code disaster before it shows up in your attribution report.

If you want this whole flow, disclosure confirmation gating the escrow release, automated still-live checks, the verification bundle generated for you per deal, join the CollabBook beta and we’ll wire it into your account. Either way: build the checklist, run it every time, and stop releasing payment on the strength of a single screenshot.

— Dorcas Faleti, CollabBook