Skip to main content

Guide - Setup a Standalone Smart Planner Page (no iFrame)

Until now the main solution used were iframes, but we are now proposing a new way of integrating smart planner into your own domain

Written by Product Management

Smart Planner can run on your own domain without an iframe. This gives users a seamless experience on your branded URL, avoids all cross-domain cookie issues, and allows you to inject your own header, footer or login/sign-up scripts.

Step 1 — CNAME your subdomain

Create a subdomain (e.g. plan.yourbrand.com) and point it via CNAME to your TripBuilder hostname:

plan.yourbrand.com → CNAME → yourbrand-ibe.tripbuilder.app

  • Users see your domain in the browser address bar

  • All session cookies are first-party — no cross-domain restrictions

  • No iframe required

Step 2 — Add custom HTML to the Smart Planner page

Custom HTML (header and footer) can be configured in:

Distribution Channel settings → Themes → Smart Planner Standalone Page

This lets you inject any HTML into the <head> or around the page body — including:

  • Your site navigation / header / footer

  • Login and sign-up scripts

  • Analytics and tag manager snippets (Google Tag Manager, Matomo, etc.)

  • Custom CSS overrides

What you can inject

There are no restrictions on what can go in the custom HTML blocks. Common use cases:

Use case

How

Site header / nav

Add your standard header HTML to the header block

Site footer

Add your standard footer HTML to the footer block

Login / sign-up

Inject your auth library scripts and trigger them via JS

Custom fonts / CSS

Add <link> or <style> tags to the header block

Example — header block

<!-- Your brand navigation --> <header class="site-header"> <nav>...</nav> </header> <!-- Custom styles --> <link rel="stylesheet" href="https://cdn.yourbrand.com/styles/main.css">

Example — footer block

<!-- Your brand footer --> <footer class="site-footer"> <p>&copy; 2026 Your Brand</p> </footer> <!-- Auth/login script --> <script src="https://cdn.yourbrand.com/auth/login-widget.js"></script> <script>LoginWidget.init({ container: '#login-mount' });</script>

Did this answer your question?