QR & pixels
Two surfaces that turn Linkstacked into the canonical analytics source for your offline + paid channels.
Customise the profile QR code
Every profile gets a permanent QR code — the URL never changes even if
you swap themes, links, or the underlying domain. Customise its colour,
logo, and corner style with customiseQR:
mutation CustomiseQR($input: CustomiseQRInput!) {
customiseQR(input: $input) {
qr { _id url image { svg pngUrl } style { fg bg cornerStyle logo } }
}
}{
"input": {
"fg": "#0F172A",
"bg": "#FFFFFF",
"cornerStyle": "rounded",
"logoAssetId": "65f..."
}
}Read the live QR with myQRCode { image { svg pngUrl } analytics { scans } }.
Public QR resolution
Scanning a Linkstacked QR resolves through publicProfileByQRCodeId. If
you build your own QR-aware mobile experience, this is the entry point —
it accepts the same qrCodeId your QR encodes.
Pixel forwarding
Linkstacked can forward every public profile event (view, click,
conversion) to a third-party pixel. Configure the receivers with
updatePixelConfig:
mutation UpdatePixels($input: UpdatePixelConfigInput!) {
updatePixelConfig(input: $input) {
config {
meta { pixelId enabled }
tiktok { pixelId enabled }
google { tagId enabled }
custom { endpoint enabled }
}
}
}What gets forwarded
Every public event Linkstacked records (profile.view, link.click,
link.conversion, payment.completed) is forwarded with a stable
schema. Server-side forwarding survives ad-blockers — pixel calls don't
originate from the visitor's browser.
Read myPixelConfig to confirm the active state, including whether each
pixel passed its last health check.