Skip to content
reebuff

Agentic campaigns

Agentic campaigns

You write a goal. Freebuff turns it into a skill its coding agent can run, offers it to developers mid-task, implements your product in their project when they accept, and tells you how many of those runs converted.

Who can run one

How it works

  1. You write an agent goal.

    What a developer should end up with: a working feature, not an installed package.
  2. Freebuff builds a skill from it.

    A reviewed, versioned procedure the coding agent follows, made from your goal and your website. You never write the prompt.
  3. Developers see a proposal while they work.

    Only when the task fits. Accept starts the run, and is what you pay for.
  4. The agent implements your product in their project.

  5. The run is assessed against your goal.

    A conversion is a run the agent judged to have met it, with evidence. Never charged.

Set one up

Once your agreement is in place: New campaign → Agentic ads. Four things, then submit.

FieldNotes
Agent goalDrafted for you from your landing page; edit freely. Up to 1,500 characters. Say where the product helps, what a useful result is, and any docs or constraints.
One adHeader and subheader, generated and editable. Shown word for word.
Budget and countriesDaily budget (default $100) buys whole accepts at the campaign’s CPC, billed against your monthly invoice. All countries by default.
Submit for reviewFreebuff builds the skill, reviews it, and the campaign goes live on approval.
Writing a goal that converts
  • Where it helps. The capabilities, and the developer tasks they fit.
  • A useful result. Saving data, sending an email, a deployed endpoint. Not “install the SDK”.
  • Boundaries and references. Docs links, setup requirements, what to preserve.

What you see

The campaign table shows Displayed, Accepted and Conversions by default. Columns adds the rest.

ColumnMeaning
DisplayedProposals confirmed shown in the developer’s app.
AcceptedProposals the developer accepted. Accept starts the sponsored run and is the billable event.
ConversionsRuns the agent assessed as meeting your goal, plus any events you report yourself.
CommittedRuns that saved their changes in a commit.
Delivered in placeRuns that finished directly in the working folder, no branch or PR.
PR openedRuns that opened a pull request.
MergedPull requests confirmed merged.
API key issuedRuns whose diff shows verified API-key setup.
MCP installedRuns whose diff shows a verified MCP integration.
Acceptance rateAccepted ÷ Displayed.

Counts follow the day a proposal was first offered, so a later PR or conversion lands on that day. Breakdowns by country and tier are on the campaign page.

Conversions

After a run, the agent assesses whether your goal was met and the developer is asked to confirm. The campaign page lists each accepted run under Agent conversion assessments:

ColumnValues
GoalThe goal and its version at Accept.
User answerconfirmed, declined, unknown
Assessmentsatisfied, inconclusive, not assessed, with a reason.
EvidenceWhat the agent observed in the browser or the installed project, per criterion, plus any events you reported.
Lifecyclepending, completed, interrupted, timed out

Only satisfied counts as a conversion. An inconclusive run is not one. No run text, developer identity or exact time is shown.

Your own events

Optional. If the skill sends developers to a signup link on your site, that link carries a signed bfcid. Keep it with the account and report what only you can see.

POST/api/ads/agentic/postbackthe bfcid, no key
From your server
POST https://freebuff.com/api/ads/agentic/postback
Content-Type: application/json

{
  "conversionToken": "<the bfcid the run carried to your site>",
  "eventType": "account_created",
  "eventId": "account_created:<stable account id>",
  "occurredAt": "2026-10-24T20:15:00Z"
}
FieldTypeDescription
conversionTokenrequiredstringThe exact bfcid.
eventTyperequiredstringaccount_created. Product-use events are retired; the run assessment covers them.
eventIdrequiredstringYour stable id, namespaced by type. Same id again is a free replay.
occurredAtrequiredstringISO 8601. Within 30 days of Accept.
Responses
StatusBodyMeaning
200{ "accepted": true }Recorded; deduped: true on a replay.
400invalid_requestMalformed. Fix, do not retry.
401invalid_conversion_tokenThe bfcid is missing, damaged or not ours. Do not retry.
429rate_limited240 per token per hour.