LinkStacked

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.