Brand Knowledge Base
Everything you need to know about tapping into campaigns, issuing codes, and getting your offer into the hands of an audience that actually wants it. Written for the brand decision-maker — pricing, mechanics, and the technical contracts in one place.
Last updated: May 4, 2026
Spangle is a campaign-driven co-experience marketplace. Creators publish campaigns — moments in their lives, audiences, or projects worth gathering around. Brands tap in to be part of those moments. Audience members register free and unlock access to drops, codes, and content from the brands who've committed.
For brands, Spangle is a way to get in front of an aligned, opted-in audience without buying ads, sponsoring an entire creator's channel, or running a discount that anyone with the internet can claim. Each campaign is a finite moment — a creator's wedding week, a youth sports season, a dark-academia book club's October — and your offer lives inside that moment alongside other brands the creator chose.
Each tap belongs to one of five modes. Modes are independent — you can propose just one, or stack several in a single tap and let the creator decide which to accept.
You can propose multiple modes in a single tap. A pizza shop might tap in with both a Spark Drop (delivery to the field) and a Promo Drop (codes for at-home orders). Each mode is its own offer with its own offer text — they're not bundled.
Your multi-mode tap appears in the creator's review queue grouped together with a banner like "Multi-mode proposal · 2 offers · Decide each independently." The creator can accept the Spark Drop and decline the Promo Drop, or accept both, or decline both. Each mode tracks separately.
If your initial tap was just a Promo Drop and you later realize you want to add a Spark Drop too, your dashboard's campaign card shows a "+ Add another mode" button. New modes join the same engagement and notify the creator.
If you choose Promo Drop or Affiliate, you have to decide where the codes come from. Spangle supports four models so you can match the path of least friction for your business — from "we'll handle it" to "we'll integrate with your live coupon API."
| Model | Who creates codes | Brand effort | Best for |
|---|---|---|---|
| A · Spangle generates | Spangle (e.g. PIZZA20-AB7C) | Low — pick a prefix | Small brands, manual redemption at the register |
| B · Bring your own pool | You upload a batch from your system | Medium — export a CSV / paste codes | Mid-size brands with mature coupon systems |
| C · API webhook | Your system, in real-time | High — engineering integration | Enterprise, national chains |
| D · Affiliate link | Nobody — one shared URL | Lowest — paste a link | Existing affiliate programs, blanket discounts |
The default. You give Spangle a prefix when you tap in. Each registered audience member gets a unique code in the format PREFIX-XXXX, where the four-character suffix is randomly drawn from an unambiguous alphabet (no 0/O or 1/I confusion).
PIZZA20, GIRLSSPORTS, CROWNSLICE.Codes follow the pattern ^PREFIX-[A-Z0-9]{4}$. Your POS or e-commerce platform will need to recognize them. Two paths:
Your coupon system already generates the codes you want to use. You upload them to Spangle as a batch. Spangle assigns one unused code per audience registration. Each code is given to exactly one audience member — concurrency-safe at the database level.
PJ-2024-AB12, COUPON-9847352, FALL-X8FQ-A1, anything between 2 and 100 characters per code. Each code must be unique within your batch (duplicates are filtered automatically).When an audience member registers for the campaign, Spangle's issuance engine atomically claims the next unused code from your pool. The code is marked assigned to that audience member's email and timestamped. Two audience members joining simultaneously can't get the same code — Spangle uses Postgres row locking with FOR UPDATE SKIP LOCKED to guarantee uniqueness.
Your dashboard's "Tapped campaigns" view shows codes-remaining for any registered Promo Drop tap using the pool model. Click "Add more codes," paste a new batch, submit. New codes are appended to the existing pool and become immediately available.
Pool codes live in a separate database table with row-level security. Only you (the brand owner) and Spangle's issuance service can see them. Codes are not visible to creators, audience members, or anyone else. After a code is assigned, only the recipient audience member can see their code.
Your coupon system has an API. When an audience member registers, Spangle calls your API in real-time. You return a freshly-generated code. Spangle stores it and shows it to the audience member.
This is the right model for enterprise brands with engineering teams and existing coupon infrastructure that they want to remain the source of truth.
Authorization header on every webhook request. You verify it on your end.Spangle sends:
POST https://your-api.example.com/spangle/issue-code Content-Type: application/json Authorization: Bearer {your-shared-secret} User-Agent: Spangle-Webhook/1.0 X-Spangle-Request-ID: 8c7e6a1f-...-... { "spangle_request_id": "8c7e6a1f-...", "campaign_id": "uuid", "campaign_title": "Girls Sports Week", "campaign_slug": "girls-sports-week", "audience_email": "fan@example.com", "audience_first_name": "Sam", // nullable "registered_at": "2026-07-15T18:23:00Z", "tap_id": "uuid" }
You respond:
// Success HTTP 200 { "code": "PJ-FA24-XYZ123" } // Failure (any non-2xx, or missing/invalid code field) // Spangle will skip code issuance for this audience member; they're still registered for the campaign.
spangle_request_id is unique per registration attempt. If you receive the same ID twice (rare — would only happen if Spangle retries), return the same code.Authorization: Bearer header matches your stored secret. Reject if not.Bearer-only authentication is sufficient for V1. A future release will add an X-Spangle-Signature header containing an HMAC-SHA256 of the request body, signed with your secret. Brands that want stronger verification will be able to opt in.
The simplest model. You give Spangle one URL with your discount baked in. Every audience member sees the same link. There are no per-user codes, no batch management, no API.
A single URL. Anything goes — https://yourstore.com/coupon/spangle-girlssports, https://shop.com/?promo=GIRLS25, etc. Track campaign performance with UTM params, your own affiliate program, or whatever your existing analytics support.
Note: Affiliate is its own participation mode (separate from Promo Drop). When you tap in, pick "Affiliate" rather than "Promo Drop," and you'll just have one URL field.
If you're not sure, here's a quick decision tree:
Spangle issues codes; redemption happens on your turf. The audience experience is the same for all four models: they see their code (or link) on their dashboard and on the public campaign page after registering. They bring it to your business.
Spangle-generated codes follow a predictable format: PREFIX-XXXX. Most POS systems can recognize a fixed prefix and apply a discount. For higher-stakes campaigns, contact us to set up a verification endpoint.
Spangle tracks code issuance. Spangle does not currently track redemption — whether a given code was actually used at your register. If redemption tracking is important to you, use Model B or Model C; both leave the redemption side in your existing systems where you already have reporting.
Spangle codes are designed for single-use redemption when paired with a properly-configured POS. If a customer presents a code your system has already accepted, that's a Spangle-side bug or a brand-POS-side configuration issue — not a fraud attempt. Email us with the code and we'll help diagnose.
By default, codes remain valid until your promo_valid_until date — which can extend past the campaign window. If you didn't set one, codes have no Spangle-side expiration; expiration is whatever your POS enforces. Most brands set promo_valid_until to a date 1–7 days after the campaign ends to give audience members a tail window.
Every brand on Spangle has a brightness score — visible on your public profile, calculated from your campaign history. It rewards brands who show up consistently, deliver on commitments, and stay engaged over time.
Your brightness drives the color and animation of the star on your brand profile: from "smoldering" (faint, low) through "glowing" and "burning" up to "blazing" (intense, top tier). Brands that have gone quiet for 6+ months show a "resting" or "dimming" state.
Audience members see your brightness when they encounter your brand profile from a campaign page. Creators see it when they're considering whether to accept your tap. It's not a vanity metric — it's structural credibility.
$50 one-time registration fee to activate your brand profile on Spangle. Non-refundable once activated. During Spangle's founding season, fees are credited toward membership at official launch.
Spangle takes a percentage of campaign revenue when applicable. The percentage is disclosed at campaign creation. No monthly subscriptions, no platform fees on top of that.
Audience members never pay Spangle a platform fee. Your offer to them is on whatever terms you set.
Full pricing details: terms of service.
Currently no — the model is locked when the tap is registered. If you need to change models, contact us and we'll help. For your next campaign, you can pick any model independently of past choices.
Audience members continue registering normally — your brand's code is just skipped for them. The campaign isn't blocked, no errors are surfaced to the audience. Your dashboard shows pool stats so you can top up when you notice. Top-ups are immediate.
Same answer — audience registers, your brand's code is skipped, dashboard shows the failure. We don't fail the registration over a brand-side outage.
For Models B and C — yes. The pool table records assigned-to-email per code. For webhook codes, you decide what to log on your end. For Model A (Spangle generates), we record the issuance but don't surface a brand-side report yet — that's coming.
Spangle issues each code to one audience member. Whether redemption is single-use is enforced by your POS, not by us. If you set the discount up for one-time-use in your POS, the code is single-use; if not, it's not.
Your dashboard shows: campaigns tapped, registered campaigns, audience exposure (sum of registered audience across all your active campaigns), brand brightness, recent activity, and per-campaign code issuance stats. Detailed analytics are on the roadmap.
Yes. Until you click "Confirm registration," you're not locked in financially. The tap is in an "accepted, awaiting commitment" state. You can let it sit, or contact us to back out. Once you've confirmed, you're committed for the campaign.
Creators can withdraw their acceptance up until you've confirmed registration. After that the engagement is locked from both sides. If something breaks down mid-campaign, contact us — we're not a court but we are a small, responsive team.
Spangle stops assigning new codes after the campaign window closes (or earlier if you set a promo_valid_until date). Codes already assigned remain valid for redemption based on your POS rules. Unassigned codes in your pool stay in your pool — you can carry them to a future campaign.
You can browse creators in the directory and follow them (coming soon) — when they launch a campaign, you'll be notified. For high-value strategic relationships, contact us; we'll make introductions where it makes sense.
Yes. Webhook secrets, pool codes, and your campaign history are stored with row-level security in our database — only you and Spangle's authenticated services can read them. Audience emails are visible to you only for campaigns you're registered with. See our privacy policy.
Spangle is small and responsive. If you're a brand evaluating whether to participate, an existing brand wondering about something we didn't cover here, or a brand-engineering team scoping out a webhook integration, just write.
Email: shimmer@spangled.io
Phone: (877) 327-6843
For partnership conversations, sponsorship inquiries, or anything that might involve a multi-campaign relationship — same channels. We answer everything personally.