Description
Summary We're building an attribution and analytics product tracking where customers actually come from and what drives revenue, across first-touch, last-touch, and multi-touch models. Adding server-side conversion tracking (Meta/Google/LinkedIn CAPI) on top of an existing ClickHouse/Tinybird pipeline. Stack: Node.js, Express, PostgreSQL, ClickHouse (via Tinybird), React, Stripe. This is more specific than a general backend role. We need someone who has actually built attribution logic and actually integrated at least one ad platform's Conversions API, not someone learning both on our project. What the work involves: - Server-side conversion forwarding to ad platform CAPIs — designing event ID construction so client-side pixel events and server-side events dedupe correctly, including events with no natural unique ID (add-to-cart, page views) as well as ones that have one (purchases) - Writing and reviewing ClickHouse queries — aggregations, uniqExact/uniq for visitor counts, ASOF joins for touchpoint matching, window functions for attribution models - Auditing and fixing attribution logic — first-touch, last-touch, linear, time-decay, multi-touch — making sure a conversion is credited to the right source, not a fallback or a default - Reconciling numbers across ClickHouse and Postgres, and across different dashboard pages, when they disagree - QA on data correctness not "does the page load," but "does this number actually mean what it claims to mean" What matters most: - You've shipped a Conversions API integration for at least one platform — you know event dedup behavior, hashed PII requirements, and what happens when client and server events disagree on timing or format - Real ClickHouse experience — you understand why a row-limited query and a proper aggregate query give wildly different totals, and why uniqExact doesn't sum across GROUP BY buckets the way count does - Understands attribution well enough to know when "no clear source" should show as unknown, not silently default to a fallback - Knows a database call returning "no error" doesn't always mean the write succeeded, and codes accordingly - Can work independently — noticing problems before they're pointed out is part of the job Nice to have: - Tinybird specifically - Comfortable using AI coding tools, and can explain your reasoning, not just submit code Structure: paid trial first — a short, scoped task on real data with a clear deliverable. Ongoing work depends on trial output. To apply, answer briefly: 1. You need to send the same purchase event from a browser pixel and from your server to an ad platform, seconds apart, and have it count once. What goes into the event ID, and what happens if you get it wrong? 2. A dashboard shows "45 visitors" on one page and "1,835 visitors" on another for the same site and date range. What 2-3 things would you check first? 3. Name one CAPI integration you've personally built, and one real problem you hit that wasn't in the documentation. Keywords: Conversions API, Meta CAPI, Google Ads API, LinkedIn CAPI, Server-Side Tracking, ClickHouse, Tinybird, Node.js, PostgreSQL, Attribution Modeling, Marketing Attribution, Multi-Touch Attribution, SQL, Data Pipeline, Analytics Engineering, Event Deduplication