agentleFS
itsryanarmaniitsryanarmani/skills/ads-discord/SKILL.md

ads-discord

Skill1 starsChanged 5 days agoMITView on GitHub

Set up Discord Ads Quests measurement through the sales-led Discord route or the approved Gamesight partner path — self-service account gates, no Discord pixel or public direct Events API schema, Gamesight S2S events, transaction_id deduplication, Referral Key and Touchpoints URL handoff, mobile AppsFlyer versus PC/console Gamesight measurement, consent limits, and server-side verification. Use when wiring Discord Quests tracking, asking for Discord conversion API access, or debugging missing Quest attribution.

  • Reads credentials

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

12 rules. About 0 are common, 10 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈10

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use the Discord Quests contact form.

    line 12
  2. Distinctive:

    Do not treat Ads Manager access as Quests or Events API access.

    line 26
  3. Very specific:

    Do not invent DISCORD_ADS_PIXEL_ID, DISCORD_ADS_TAG_ID, or a Discord script URL.

    line 42
  4. Very specific:

    Follow ad-conversion-hub for dispatch records, absent-secret skips, retry limits, consent, and reconciliation.

    line 142
  5. Distinctive:

    Quests are incentivized: Do not treat rewarded engagement as a paid conversion.

    line 161
  6. Distinctive:

    Gamesight postbacks are locked: Ask the Discord representative to change event or goal triggers.

    line 163
  7. Distinctive:

    Quest availability depends on client and region: Verify supported clients before launch.

    line 167
  8. Distinctive:

    Attribution window and delay are UNVERIFIED: Ask the rep for the window, timezone, event SLA, and late-event policy before launch.

    line 169
  9. Distinctive:

    Gamesight cost aggregation is manual for Discord: Use manual cost upload. Gamesight Discord guide.

    line 175
  10. Distinctive:

    Use the Advertiser-scoped key.

    line 191
  11. Distinctive:

    Use the Ads Manager or representative report.

    line 194
  12. Distinctive:

    Keep Gamesight API keys in the deployment secret store.

    line 224

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Discord Ads (Quests)

Discord Quests are sales-led. The public integration path is a measurement partner, not a Meta-style public pixel. Discord publishes an Events API and terms, but not its direct endpoint, schema, or auth details.

Use the Discord Quests contact form. Expect a Discord representative to configure the campaign and measurement handoff. Do not build a direct adapter from undocumented fields.

Account and access

For Quests, open the Quests page and select Get Started. The page sends advertisers to a contact form. It does not present a public Quests API-key flow.

Discord also has self-service Ads Manager terms. These require a Team, one Ads Account, legal business data, tax data, and billing data. Discord may approve, decline, or condition access. See Self-Service Advertising Terms, sections 1 and 2.

Do not treat Ads Manager access as Quests or Events API access. A Discord representative configures the Quest campaign and measurement handoff. Gamesight Discord integration.

For mobile Video Quests, Discord names AppsFlyer. For PC and console publishers, it names Gamesight for server-to-server events. The Gamesight route is beta and requires an existing Gamesight integration. Discord measurement announcement.

Client-side tag or SDK

Discord browser tag

UNVERIFIED: no public Discord browser tag, pixel URL, client ID, or vendor environment-variable name is documented. Discord's Events API terms describe server-to-server data and refer to technical documents supplied to a Partner. They do not define a browser script or pixel. Events API Terms.

Do not invent DISCORD_ADS_PIXEL_ID, DISCORD_ADS_TAG_ID, or a Discord script URL. This adapter has no Discord client-side secret or public ID.

Gamesight web measurement

For a Gamesight-backed web game, generate the Web SDK API key and copy the console-generated snippet into the landing page before events fire. Gamesight does not publish a fixed script URL or environment-variable name. Gamesight Web SDK.

The SDK can send a purchase event. Use the same transaction_id in the web event and the server event:

gsght('send', {
  type: 'purchase',
  transaction_id: '<payment-event-id>',
  revenue_amount: '25.00',
  revenue_currency: 'usd',
  platform: 'web',
});

This is a Gamesight event, not a Discord pixel. Use an internal, non-PII ID with gsght('set', 'user_id', ...); never use an email. Gamesight identity guidance.

Server-side conversion API

Direct Discord Events API

Discord confirms an Events API for server-to-server Event Data and Matching Attributes. It supports attribution, conversion tracking, analytics, campaign optimization, and audience matching. Discord Events API Terms.

UNVERIFIED: Discord's public documents do not expose the direct endpoint, HTTP auth header, version, required JSON fields, timestamp unit, event names, response body, retry rules, or deduplication field. The terms require the Partner to follow technical specifications supplied by Discord. Access is therefore partner- or rep-gated. Do not send requests to a guessed Discord URL.

Discord says Matching Attributes can include hashed email, phone, or mobile identifiers. It does not publish normalization, encoding, or field names. Apply the hub consent gate, but send these fields only after Discord gives the schema.

Gamesight partner route

Gamesight documents the public server API used by the Discord integration:

POST https://api.ingest.marketing.gamesight.io/events
Authorization: <GAMESIGHT_API_KEY>
X-Api-Version: 1.1.0
Content-Type: application/json

Required body fields are type, user_id, and identifiers. Optional fields include revenue_currency, revenue_amount, external_ids, timestamp, transaction_id, gameplay_session_id, metadata, attribution, and consent_scopes. A successful request returns HTTP 201. Gamesight Events API reference.

Send events from the backend after the business event. Use a stable, private user_id; identifiers carries device signals. Pass the player's IP when required. Gamesight Measurement API quick start.

Gamesight documents these revenue fields for a purchase:

{
  "type": "purchase",
  "user_id": "internal-user-123",
  "identifiers": { "os": "Windows 10", "resolution": "1920x1080" },
  "revenue_currency": "usd",
  "revenue_amount": 25.0,
  "transaction_id": "<payment-event-id>"
}

These fields belong to Gamesight. Discord receives the configured postback through the partner integration. Gamesight Discord guide.

Event mapping

The hub owns canonical names. Discord publishes no direct event names at all, so there is no mapping table to give: every hub event maps to a Gamesight goal you create yourself, with the same name. Only purchase is a documented Gamesight event; the rest are custom goals, and revenue treatment on refund is not documented either.

Gamesight event names are not Discord event names. Gamesight event naming.

Deduplication

For the Gamesight route, use transaction_id. Gamesight enforces one processed event per transaction_id. Put the same payment event ID in the client purchase and server purchase. This is the documented Gamesight deduplication field, not event_id. Gamesight Events API reference.

UNVERIFIED: Discord's direct EAPI client/server deduplication field. Do not assume it accepts event_id, eventID, or conversion_id.

Follow ad-conversion-hub for dispatch records, absent-secret skips, retry limits, consent, and reconciliation. Never gate a server purchase on a click ID.

Click IDs and touchpoints

The Gamesight Discord integration does not use click or impression tracking URLs. It uses a Referral Key and Touchpoints URL. Copy both from the Gamesight tracker and give them to the Discord representative. Gamesight Discord guide.

There is no documented Discord query parameter click ID or retention period. UNVERIFIED: Referral Key lifetime, Touchpoints URL lifetime, and any direct Discord click parameter. Do not create discord_click_id.

Gamesight's Web SDK can collect UTM parameters. Its optional gsid is a Gamesight session ID for web-to-game matching, not a Discord click ID. Its retention period is UNVERIFIED. Gamesight session matching.

Tracking quirks that bite

  • Quests are incentivized. Do not treat rewarded engagement as a paid conversion. Discord filters automated and fraudulent activity. Terms.
  • Gamesight postbacks are locked. Ask the Discord representative to change event or goal triggers. Gamesight Discord guide.
  • Mobile and PC/console use different paths. AppsFlyer covers mobile. Gamesight covers PC and console S2S beta access. Discord announcement.
  • Quest availability depends on client and region. Verify supported clients before launch. Quests FAQ.
  • Attribution window and delay are UNVERIFIED. Ask the rep for the window, timezone, event SLA, and late-event policy before launch.
  • Discord reporting is limited. Results may be aggregated or anonymized. Discord measurements control billing. Attribution Terms.
  • Direct EAPI activation has broad scope. Send only approved campaign data. Events API Terms.
  • Gamesight cost aggregation is manual for Discord. Use manual cost upload. Gamesight Discord guide.

Verification

For Gamesight, treat HTTP 201 from /events as request proof only. Store the response and dispatch record. Then query Gamesight reporting:

POST https://api.marketing.gamesight.io/stats
Authorization: <GAMESIGHT_ADVERTISER_API_KEY>
X-Api-Version: 3.0.0

The stats request requires game_id, fields, groups, and filters. Request goals, goal_rate, goal_revenue_amount, and goal_revenue_currency. Use the Advertiser-scoped key. Gamesight Stats API.

For direct Discord EAPI, UNVERIFIED: no public event read or test endpoint. Use the Ads Manager or representative report. A successful request is not platform proof. Reconcile attributed purchases with payment-provider charges.

Common pitfalls

  • Adding a Meta-style pixel, event_id, fbclid, or guessed script URL.
  • Calling the Discord Events API with a bot token or webhook.
  • Assuming Ads Manager approval includes Quests or EAPI approval.
  • Using raw email, usernames, or public IDs as user_id.
  • Sending the Gamesight key to the browser.
  • Expecting a click ID or editable postback in Gamesight.
  • Treating 201 or a dashboard count as payment truth.
  • Sending under-age, sensitive, or non-consented data.

Hub adapter configuration

The public Gamesight adapter may use these local names:

DISCORD_ADS_GAMESIGHT_API_KEY   server secret; repository convention
DISCORD_ADS_GAMESIGHT_GAME_ID   reporting config; repository convention

These are not Discord-defined environment-variable names. There is no verified Discord pixel ID environment variable. A missing Gamesight key returns skipped; it must not fail payment processing. Keep canonical event names and consent handling in ad-conversion-hub.

Security

Keep Gamesight API keys in the deployment secret store. Keep them out of client bundles, URLs, logs, screenshots, and commits. Do not log user or device data, Referral Keys, or Touchpoints URLs.

Apply the hub's measurement and ad_user_data gates before dispatch. Discord requires a lawful basis, privacy notice, and consent or authorization. Its terms exclude sensitive data and users below 13 or the applicable age. Events API Terms. Send only fields that the approved integration needs. Use internal non-PII IDs. Retain consent and dispatch decisions. Delete temporary normalized identifiers after dispatch.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.