Skip to content

Ad landing page: new address, side-by-side buttons, country code dropdown - #48

Merged
digibrander merged 4 commits into
mainfrom
development
Oct 31, 2026
Merged

digibrander merged 4 commits into
mainfrom
development

Conversation

@jadhavgaurav

@jadhavgaurav jadhavgaurav commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

What this releases

Updates to the ad landing page (four commits, five changes):

  1. New address. The page moves from /start to /website-landing-page (rupee and dollar copies). /start redirects there and keeps the ad's utm_ and click tags, so any early link still works. Still noindex, still out of the sitemap.
  2. Links followed. The page is noindex only: the meta tag becomes noindex, follow once the site is live and the header is X-Robots-Tag: noindex. It no longer says nofollow. robots.txt stays open so ad reviewers can load it.
  3. Form buttons. "Pay now" and "Talk to us" sit side by side at equal size, each with a round icon chip at the right edge (arrow, WhatsApp) and the label centred beside it. "Talk to us" has a light copper fill so it reads as a button. They stack only on the narrowest phones. The price card's pay button matches, through an optional centred label on the shared arrow button (other uses of it are unchanged).
  4. Country code dropdown. The mobile field has a custom dropdown (34 countries, India first and the default on the rupee page, the browser's country on the dollar page). Keyboard, type-ahead and screen reader support. The form sends the dial code and number together; India takes a 10-digit Indian mobile, other countries any plausible international number, and a number typed with its own +code wins.
  5. Ad attribution (f6b9434, from the other session): the ad a visitor came from travels, sealed, in the sign-up link (plan 59).

Before or with this

  • The app's side of attribution is in digibranders/brandbasket-platform#86, which is still open. Releasing the website first is safe: the live app ignores the extra data. Attribution just will not be recorded on accounts until #86 is merged.
  • lib/start-token.ts must stay identical in both repos.
  • The landing page address changes, so update any Google Ads landing URL or GA4 filter that uses /start.
  • Vercel needs PLATFORM_LEADS_URL and LEADS_API_TOKEN (the same values as the platform's) for the form to store leads and prefill the sign-up.
  • Non-Indian numbers are saved with the lead but not prefilled in the app's sign-up yet (the sealed link only carries Indian numbers).

Checked

npm run lint, npm run typecheck, npm test (501), npm run build and npm run verify:html all pass. Tested on a local server: both buttons at 360px and 375px, the dropdown with mouse and keyboard, the /start redirect with its query string, the robots header, and the form request contents. Playwright e2e was not run locally; CI should cover it.

The ad landing page reads the campaign and click ids from the address, and the Meta and Google Analytics cookies only for the purposes the visitor allowed. They are sealed into the sign-up token with the visitor's details, so the platform can keep which ad an account came from (plan 59).
/start is noindex in the meta tag and the X-Robots-Tag header, but no longer
nofollow once the site is live. The per-route nofollow option added for it is
removed, since nothing else uses it. Tests now cover the live behaviour:
"noindex, follow" in the meta tag and "noindex" in the header.
The page lives at /website-landing-page (rupee and dollar copies). The old
/start address redirects there with its query string, so utm and click tags
survive. The noindex header, the registry entry and the tests follow the new
path; the page stays out of the sitemap.
…de dropdown

The two form buttons sit side by side with equal size: "Pay now" in ink and
"Talk to us" in a light copper fill, each with a round icon chip at the right
edge (arrow, WhatsApp) and the label centred beside it. They stack only on the
narrowest screens. The price card's pay button matches, through an optional
centred label on the shared arrow button.

The mobile field has a custom country code dropdown in the site's style (34
countries, India first and the default on the rupee page, the browser's country
on the dollar page). It works with the keyboard, type-ahead and screen readers.
The form sends the dial code and number together; India still takes a 10-digit
Indian mobile, other countries any plausible international number, and a number
typed with its own +code wins over the dropdown.
@digibrander
digibrander merged commit 368afb3 into main Oct 31, 2026
4 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants