Here's exactly what adgamify connects to today — no more, no less. Two things ship now: signed outbound webhooks, and CSV export of your audience.
Add an endpoint from any workspace's Webhooks page and adgamify will POST a signed JSON payload the moment either event happens — retried automatically if your endpoint is briefly down.
entry.createdFires the moment a player submits an entry — the same event that counts against your plan’s entry cap.
campaign.publishedFires when a campaign is published and goes live for players.
Each webhook gets its own secret, shown to you once at creation. Every delivery carries these headers so you can verify it actually came from adgamify before trusting the payload:
Sign `${timestamp}.${rawBody}` with your webhook's secret using HMAC-SHA256, then compare it to X-Adgamify-Signature using a constant-time comparison. Use the raw request body — not a re-serialized copy — since re-serializing JSON can change the exact bytes and break the signature check.
import { createHmac, timingSafeEqual } from 'node:crypto';
function isValidSignature(secret, timestamp, rawBody, signatureHeader) {
const expected = createHmac('sha256', secret)
.update(`${timestamp}.${rawBody}`)
.digest('hex');
const a = Buffer.from(expected, 'utf8');
const b = Buffer.from(signatureHeader, 'utf8');
return a.length === b.length && timingSafeEqual(a, b);
}
// In your HTTP handler, using the RAW request body (not re-serialized JSON):
app.post('/webhooks/adgamify', (req, res) => {
const timestamp = req.headers['x-adgamify-timestamp'];
const signature = req.headers['x-adgamify-signature'];
if (!isValidSignature(process.env.ADGAMIFY_WEBHOOK_SECRET, timestamp, req.rawBody, signature)) {
return res.status(401).send('invalid signature');
}
const { event, data } = JSON.parse(req.rawBody);
// event is "entry.created" or "campaign.published"
res.status(200).send('ok');
});Every workspace's Audience page has a one-click CSV export of captured entries — names, emails, answers, scores, and timestamps — so you can hand a clean file to email tools, a CRM import, or a spreadsheet without waiting on us.
Every workspace has a Webhooks page in your dashboard — add an endpoint, copy the secret, and start receiving signed events.