Resources
Browse guides
Tracking Integration Guide
Connect your registration platform with BibSync to track partner-driven registrations. Choose the method that best fits your setup.
Google Tag Manager
If your registration site uses GTM, this is the fastest way to integrate. No code changes are needed on your website, just add two tags in the GTM console.
Base Tag
Create a Custom HTML tag. Set the trigger to All Pages.
<script src="https://bibsync.link/v1/pixel.js" async></script>
<script>
window.__bsq = window.__bsq || [];
window.__bsq.push(['init', 'YOUR_CAMPAIGN_SLUG']);
</script>Replace YOUR_CAMPAIGN_SLUG with your campaign slug from BibSync tracking settings.
Registration Tag
Create another Custom HTML tag. Set the trigger to fire on your thank-you or confirmation page only.
<script>
window.__bsq = window.__bsq || [];
window.__bsq.push(['track', {
orderId: {{Transaction ID}},
amount: {{Purchase Value}}
}]);
</script>Replace {{Transaction ID}} and {{Purchase Value}} with your GTM variables.
Optional dataLayer event
If your checkout already pushes purchase data to the dataLayer, map those fields into your registration tag.
dataLayer.push({
'event': 'purchase',
'transactionId': 'ORDER-123',
'transactionTotal': 49.99
});Push this event before the confirmation page loads so GTM can fire the registration tag with the final values.
Publish and test
Publish the GTM container, complete a real test registration, and confirm the event appears in BibSync.
Custom JavaScript
Use this option when you can directly edit your registration pages and thank-you flow.
Base Script
Add the BibSync base script to every registration page where partner traffic lands.
<!-- BibSync Tracking Pixel -->
<script src="https://bibsync.link/v1/pixel.js" async></script>
<script>
window.__bsq = window.__bsq || [];
window.__bsq.push(['init', 'YOUR_CAMPAIGN_SLUG']);
</script>Replace YOUR_CAMPAIGN_SLUG with your campaign slug from BibSync tracking settings.
Registration Script
Trigger the registration event after a successful purchase on the confirmation page.
<script>
window.__bsq = window.__bsq || [];
window.__bsq.push(['track', {
orderId: 'YOUR_ORDER_ID',
amount: 49.99
}]);
</script>Replace YOUR_ORDER_ID and 49.99 with your real order ID and purchase value.
Verify the flow
Run a test registration and confirm the click and registration are visible in BibSync.
Server-to-Server Webhook
Sign the raw JSON payload with your campaign secret using HMAC-SHA256 and send the digest in the X-BibSync-Signature header.
Choose this option only if your team can send signed backend requests. It is the most flexible setup, but it requires engineering work.
How it works
- Capture the BibSync click ID when a partner sends a visitor to your site.
- Store that click ID until the registration is completed.
- Send the completed registration from your backend to BibSync with an HMAC signature.
Endpoint
POST https://bibsync.link/api/v1/s2sPayload example
{
"clickId": "bs_clk_abc123xyz789abc123",
"externalOrderId": "RTS-998877",
"amount": 25.00,
"currency": "EUR"
}Node.js example
const crypto = require('crypto');
const secret = process.env.BIBSYNC_S2S_SECRET;
const body = JSON.stringify({
clickId: req.query.bs_id,
externalOrderId: order.id,
amount: order.totalAmount,
currency: 'EUR',
});
const signature = crypto
.createHmac('sha256', secret)
.update(body)
.digest('hex');
await fetch('https://bibsync.link/api/v1/s2s', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-BibSync-Signature': signature,
},
body,
});Python example
import hmac, hashlib, json, os, requests
secret = os.environ["BIBSYNC_S2S_SECRET"]
body = json.dumps({
"clickId": request.args.get("bs_id"),
"externalOrderId": order.id,
"amount": order.total_amount,
"currency": "EUR",
})
signature = hmac.new(
secret.encode(), body.encode(), hashlib.sha256
).hexdigest()
requests.post(
"https://bibsync.link/api/v1/s2s",
headers={
"Content-Type": "application/json",
"X-BibSync-Signature": signature,
},
data=body,
)FAQ & Troubleshooting
How do I test the integration?
Use a real partner link, complete a test registration on your site, and then verify the click and registration appear in BibSync.
Why do I see partner clicks at risk?
That means BibSync received partner clicks, but those visitors have not produced a registration within the expected window yet.
What happens if tracking goes offline?
BibSync warns organizers after 24 hours without data and automatically pauses the campaign after 48 hours until tracking is restored.
Can I run more than one integration method?
Use one primary method per campaign to avoid duplicate registrations. If you are migrating, disable the old flow before enabling the new one.
How quickly should events appear?
Clicks usually appear within seconds. Registrations should appear shortly after the confirmation page loads or the S2S request is accepted.