← Back to Case Studies · Visit live site ↗

EN Tercume

Built a sworn translation agency's digital presence from zero. Campaigns hit 13x ROAS but the results came in waves, not steadily. Nine months in, I rebuilt the platform on Astro and Cloudflare Pages, set up a self-hosted n8n server and HubSpot from scratch, and wired closed-loop attribution from ad click to closed-won deal. That made Maximize Conversion Value bidding viable and pulled the noise out of the campaign data. Implemented multi-language SEO across five markets to bring buying-intent organic traffic from each.

01
Performance Marketing Search Ads SEO HubSpot n8n Closed-loop Attribution Multi-language SEO Astro Cloudflare Pages
13x
ROAS Confirmed
2,966
Total Clicks
46k
TRY Total Ad Spend
53
WhatsApp Leads
Context

Starting from zero, then rebuilding from the campaigns up

A former business partner opened a new office with no website. I volunteered to build everything from scratch. Sworn translation is a premium service that runs on trust, the right clients pick credibility over price. The strategy paired brand positioning with paid search to make the agency the obvious choice in Kadıköy.

Nine months in, the campaigns were profitable but uneven. Some weeks pulled in three corporate accounts, others almost none. WhatsApp conversations dragged into weeks before closing, and the lead trail broke somewhere between the ad click and the contract.

The fix wasn't more ad spend. It was infrastructure. A platform that could carry multi-language SEO for global expansion, a CRM that knew which leads were already customers, GDPR-grade tracking with proper consent banners, and an attribution pipeline that didn't lose the gclid between a click and a deal that closed three weeks later over WhatsApp.

WordPress couldn't carry any of that. Time to rebuild.

What I Built

Phase 1: Brand and campaign foundation (months 0-9)

Brand Positioning

  • Built the agency's complete digital identity from scratch
  • Clean site design with consistent visual language
  • Local authority through Google Business Profile optimisation and structured service pages
  • Positioned a new office as the trusted sworn translation provider in Kadıköy

Initial Website (WordPress)

  • WordPress with Astra and Elementor
  • Form routing and Cloudflare Turnstile
  • Email automation

Tracking

  • GTM with five conversion actions firing to GA4 and Google Ads
  • Career visitors excluded via custom audience to keep ad spend on commercial intent
  • Manual offline conversion uploads of high-value clients into Google Ads
  • Customer match lists for B2B retargeting

Paid Search

  • High-intent keywords (yeminli tercüme, tercüme bürosu)
  • Negatives filtering students and free-service seekers
  • Local targeting Kadıköy

Phase 2: Platform rebuild and CRM pipeline (month 9 onwards)

The campaigns proved the brand and the offer. The infrastructure couldn't keep up. The Phase 2 rebuild was about making the same ad spend work harder by feeding it better data and opening new markets.

Platform

  • Migrated WordPress to Astro on Cloudflare Pages, rebuilt with Cursor and Claude Code
  • Static HTML by default, sub-second load times, framework JavaScript only shipped where a component actually needs it
  • 15 pages on the legacy site became 89 pages across 5 locales
  • DM Serif Display + DM Sans typography to mirror the brand wordmark
  • Cloudflare Turnstile for CAPTCHA-free bot protection on every form

Multi-language SEO

  • Five languages: Turkish, English, German, Azerbaijani, plus Persian with full right-to-left support
  • Per-locale meta titles, descriptions, alt texts, hreflang
  • Service pages built to capture buying-intent organic search in each market
  • Persian buyers searching for sworn translation in Persian land on Persian content. German buyers in German. Same for English and Azerbaijani

n8n Automation Layer

  • Built an n8n server from scratch on my own infrastructure
  • Form submissions go through a Cloudflare Pages Function (server-side, n8n webhook never exposed to the browser)
  • Each lead writes in parallel to HubSpot (CRM) and Google Sheets (backup, disaster recovery, manual upload lane)
  • Separate pipeline captures click events on tel/mailto/WhatsApp links so high-intent clicks get logged before a form fills out

HubSpot CRM (built from zero)

  • Set up the entire HubSpot from scratch
  • Contact records carry gclid as a dedicated CRM field, not a vague custom property
  • Deal logic with deduplication: existing customer with an open deal does not create a duplicate, existing customer with a closed deal opens a new one
  • Deal close fires an n8n automation that uploads the offline conversion (with deal value) to Google Ads

Closed-loop Attribution

  • gclid captured at first click, persisted in first-party cookies across sessions
  • Form carries gclid into HubSpot's googleAdClickId field
  • Deal closes won → n8n uploads the conversion (with value) back to Google Ads, attributed to that original click
  • Same pipeline already handles fclid (Meta click ID) and Meta UTMs. The client runs Google Ads only for now, but the moment they expand to Meta campaigns the attribution loop closes there too

Bid Strategy Upgrade

  • With deal value flowing back automatically, campaigns moved from Max Conversions to Maximize Conversion Value
  • Smart Bidding started optimising for high-value B2B clients (corporate accounts, embassy work, recurring legal translation) instead of any lead that fills a form
  • Same budget, better lead quality

GDPR-grade Consent

  • Custom three-tier consent banner (Essential / Analytics / Marketing), localised in 5 languages
  • Tracking IDs (gclid, fbclid, UTMs) gated behind explicit marketing consent
  • No third-party tracking scripts (GTM, GA4, Google Ads) load until the user accepts marketing consent
  • Built to GDPR for the European clients, EU institutions, and embassies on the agency's roster. KVKK in Turkey is more lenient but the same setup covers it by default
Campaign Results (Phase 1)

From first click to confirmed revenue

Accurate conversion tracking went live November 2025 alongside a Max Conversions campaign. The agency owner confirmed 13x ROAS by December 2025.

After January 2026, budget became irregular (voluntary project). Despite constraints, consistent €100 weekly spend returned €200+ in confirmed projects, peaking at €2,000 in a single week (March 2026). Offline conversion uploads and customer match lists created a feedback loop: high-value B2B clients fed back into Google Ads, training the algorithm to find similar prospects. This led to a growing number of long-term corporate contracts. Campaigns also pushed local visibility up, including some media coverage for the agency. When performance work is built on a real brand foundation, it pulls in attention that goes beyond the paid clicks.

Lead Mix

Which channels actually drove leads?

WhatsApp
53
Get Directions
50
Quote Form
12
Phone Call
9
Contact Form
2
Email Click
1
Visual Data

Campaign performance at a glance

Closed-loop Attribution

Where most agencies lose the lead trail

Most B2B marketing setups can track an ad click and a form fill, but lose the connection when the deal closes. For a sworn translation agency, that gap matters. High-value contracts close weeks after first contact, often over WhatsApp or in person. Pixel-based tracking can't see that, and Google Ads' Smart Bidding is only as smart as the conversion data it gets fed.

The fix runs end-to-end:

  1. The user clicks an ad and lands on a service page. Their gclid gets stored in a first-party cookie that persists across sessions.
  2. When they submit the quote form (could be the same visit, could be three weeks later), the form carries the gclid through to HubSpot.
  3. The contact lands in HubSpot deduped, and a deal opens with the gclid attached.
  4. When the agency owner moves the deal to closed-won, the n8n automation uploads the offline conversion (with deal value) back to Google Ads, attributed to the original click.

The strategic outcome: Maximize Conversion Value bidding now has revenue data to optimise on, not just lead counts. The campaigns started learning to find prospects that match the profile of paying high-value clients, not just anyone willing to fill out a form. The same ad spend started producing better leads.

Multi-language SEO

Five markets, five intent profiles

Each language has its own buyer intent profile:

  • Turkish: local Kadıköy and Istanbul-area buyers
  • English: international clients needing sworn translation for embassy or visa documents
  • German: DACH-area clients including German-speaking embassies and consulates
  • Azerbaijani: business and legal translation between Turkey and Azerbaijan, an underserved corridor
  • Persian (RTL): Iran-Türkiye legal traffic plus Afghan diaspora, a high-intent niche most Turkish agencies don't serve at all

Per-locale metadata, hreflang, structured content. The point isn't translation, it's capturing buying-intent organic search that already knows what it wants in its own language. The ads bring people in on day one, the SEO catches them when they come back to compare options on day fourteen.

Compliance

GDPR-grade consent without third-party tools

The agency serves European clients, EU institutions, and embassies. GDPR is the credible compliance story when prospects ask, KVKK in Turkey is the local floor and is automatically covered by a GDPR-grade setup. Built a custom three-tier consent banner (Essential / Analytics / Marketing) localised in 5 languages. No third-party CMP, no licensing fees, no extra script in the head. Tracking IDs gated behind explicit marketing consent. No third-party tracking scripts load before the user makes a choice.

Key Takeaways

What this project confirmed

  • Closed-loop attribution unlocks bid strategies that lead-only tracking can't. Without HubSpot writing offline conversions back to Google Ads, Maximize Conversion Value bidding works on assumptions, not data. The bid strategy upgrade is what made the same ad budget produce higher-value leads.
  • Multi-language SEO opens markets a local agency can't reach with one language. The Persian and Azerbaijani audiences alone are demand pools most Istanbul agencies leave on the table.
  • Infrastructure is the moat over time. Campaigns produced 13x ROAS in Phase 1, but the inconsistency was a tooling problem, not a strategy problem. The Phase 2 rebuild made the same campaigns work harder for the same spend.
  • Build tracking before launching ads. Still true. Phase 1 wouldn't have hit 13x without it.
  • Service page structure matters for users and SEO. Doubly true when you're building 89 pages across 5 locales.
  • Exclusions are as important as inclusions. Job seekers don't buy translation services. Smart Bidding doesn't know that without your help.
  • Even with minimal budget, well-structured campaigns generate ROI. And with closed-loop attribution feeding them, that same minimal budget gets sharper every week.