Setup

Setup guide

Connect your Notion database and your widget reads from it live. About ten minutes the first time—mostly duplicating the template and creating a Notion integration.

Step 1

Create a Notion integration

This gives the widget secure permission to read—and write back to—your hooks database.

  1. Go to notion.so/my-integrations and click New integration.
  2. Name it (e.g. Hook Lab) and pick your workspace.
  3. Under Capabilities, check both Read content and Update content.
  4. Submit, then copy the Internal Integration Secret—it starts with ntn_. That string is your Notion token.
Read-only is not enough. Closing a Lab test writes Winner/Retired status back to the winning and losing variants in your database—without Update content, the End Test button will fail.
Treat this token like a password. It's stored encrypted and never shown again—paste a new one anytime to replace it.
Step 2

Prepare your Hook Lab database

Fastest path: duplicate the Hook Lab template into your own workspace—every property below arrives pre-built. Already tracking hooks in your own database? Rename its properties to match these exact names—they're case-sensitive.

PropertyTypeNotes
HookTitleThe opening line text—your database's title column, and the primary card content.
PlatformSelectTikTok, Reels, Shorts.
StatusSelectDrives the kanban column: Draft, Testing, Winner, Retired. A row with any other value (or blank) is dropped from the board.
Video URLURLOptional. Set once the hook has been posted.
View CountNumberThe primary performance signal—drives the Winners ranking and the Lab tab's leader.
Completion RateNumberOptional. Percent, e.g. 0.42 for 42%.
SavesNumberOptional. Alt performance signal for platforms without a reliable completion rate.
Hook AngleSelectOptional freeform tagging: Question, Controversial, Stat/Fact, Callout, Story Cold-Open.
NotesTextOptional. Freeform post-mortem—why a hook worked or didn't.
Date TestedDateUsed as a tie-break sort, and as the Lab tab's Timeline order.
Board OrderNumberOptional. Manual position within a Status column.
Parent IdeaRelationOptional—see below. Powers the Lab tab's head-to-head testing view.

Using Parent Idea for the Lab tab

Parent Idea is a self-referencing relation—it links a row to another row in this same database, and it's what groups variant hooks into a head-to-head test:

  1. Pick one row to be the idea root for the group—its own Parent Idea stays blank.
  2. For each variant phrasing testing that same idea, set its Parent Idea to point at the idea-root row.
  3. At least 2 variant rows pointing at the same root are required before the Lab tab will show it as a test—a single variant with no sibling won't appear there.
The property name must be exactly Parent Idea, and its type must be Relation, pointed at this same database (self-referencing)—not a new or unrelated database.
Step 3

Connect the integration to your database

Creating the integration isn't enough—you must give it access to the database itself.

  1. Open your hooks database as a full page in Notion.
  2. Click the ••• menu (top-right) → ConnectionsConnect to, and choose your integration from Step 1.
Step 4

Copy your database ID

  1. Open the database as a full page and copy the URL.
  2. The database ID is the 32-character string after your workspace name and before the ?v=. Example: notion.so/you/1a2b3c…(32 chars)?v=…
  3. Copy just those 32 characters.
Step 5

Connect it on the left

  1. Paste your Notion token and database ID into the form.
  2. Click Connect. Your widget goes live immediately, and you'll get its embed URL.
Step 6

Embed your widget anywhere

Once connected, you get one link—your widget's embed URL.

  1. Use it directly, or embed it anywhere that accepts an iframe: paste it into a Notion /embed block, or wrap it in an <iframe> for a website or CMS.
  2. It's read-only for viewers, except for closing a Lab test—no one can edit hooks or Notion properties directly through it.

Colors and background

Accent color and a transparent background are both set from the Appearance section when you create or edit a widget on the left—no URL editing needed. Editing them there rewrites your embed URL automatically, so re-copy it afterward if you've already pasted it somewhere.

Other URL parameters

ParameterEffect
?theme=lightLight background instead of the default dark theme.
?theme=charcoalNeutral dark background—a sleeker alternative to the default.
These two aren't in the widget editor yet—add them to the end of your embed URL by hand, e.g. &theme=charcoal.
The widget is live: edit your Notion database and it reflects the change within 60 seconds—no need to re-embed.
Step 7

Updating & troubleshooting

Board empty or missing hooks? Check that:

  1. The integration is actually connected to the database (Step 3)—the most common miss.
  2. The database ID is the 32-char ID, not the view or page URL.
  3. Every row has a Status value that exactly matches Draft, Testing, Winner, or Retired—anything else (including a blank) is dropped from the board.
  4. Property names match exactly, including capitalization (Step 2).

A test isn't showing up on the Lab tab? It needs at least 2 rows with Parent Idea pointing at the same root row—see Step 2.

End Test button not working? Your integration needs the Update content capability, not just Read (Step 1).

Lost your setup link? It's in your purchase confirmation email—keep that email, it's how you return to reconnect or update your widget. You can also request a fresh one from the recover page.