Maritime Intelligence Brief · Verihelm / Dryad Global
Everything about the Maritime Intelligence Brief in one place: how the free & paid model works, how readers subscribe and get access, and — step by step — how the team produces a weekly edition. Plain English throughout.
Everything that makes an edition. Bookmark this page.
| Asset | Where |
|---|---|
| Master sheet (regional feed) | open the Google Sheet |
| Sync script | Sheet ▸ Extensions ▸ Apps Script (mib-hubdb-sync.gs) |
| MIB TEMPLATE PAID — clone this (clone weekly to start an edition) | open in HubSpot |
| MIB TEMPLATE FREE — auto-seeded (the Create-free-summary button clones this — don’t clone it yourself) | open in HubSpot |
| HubDB table — regions | MIB · Regional MSI feed |
| Paid render template | Design Manager ▸ Verihelm_Theme/templates/verihelm-mib-blog-post.html |
| Blogs | MIB Paid /en/subscriber (193373100713) · MIB Free /maritime-intelligence-brief (215219531370) |
A complete demo edition, built by following the exact weekly process. Open it to see a finished paid edition, its regional feed, and the matching free summary.
Graphic band (from the Featured Image), Weekly Analysis, and the regional feed — 5 regions, with Cyber empty to show auto-hide.
The short overview + "this week examines" list + subscribe button, sharing the same graphic.
mib-demo. (Reference only — kept as drafts.)Every week there is one Maritime Intelligence Brief, published in two versions from the same reporting:
A short teaser of the week's headline risks. Open to everyone, appears in Google, and points readers at subscribing.
The complete brief — region-by-region detail, source-traced links, the weekly graphic & PDF, and the Weekly Analysis. Behind a login.
Paying members also get the archive — every past full edition, searchable in one place. That back-catalogue is a core part of what they pay for.
Three separate publications on the same site, each with one job.
| Publication | Address | What's on it | Who reads it |
|---|---|---|---|
| Channel 16 | channel16… (home) | General maritime news | Everyone · in Google |
| MIB — Free | /maritime-intelligence-brief | Weekly summaries | Everyone · in Google |
| MIB — Paid | /en/subscriber | Full editions + archive | Members only |
Payment runs through HubSpot Commerce and Stripe — one clean path.
From a free brief, an email, or the pricing page.
Pay via the secure HubSpot payment link.
HubSpot records the contact & payment.
Marked paid, emailed a welcome + how to log in.
It all hinges on one contact field — mib_tier (free or paid). Workflows keep it correct automatically.
| When… | The automation… | The reader gets… |
|---|---|---|
| Someone pays | Sets paid + adds to the members list | Welcome email + instant access |
| A payment fails | Starts a grace period + reminder | A "please update payment" nudge, not an instant cut-off |
| They cancel / don't recover | Sets back to free + removes access | A friendly "dropped to the free brief" email with re-subscribe link |
The MIB Paid Members list is simply everyone whose mib_tier is paid. That list is the key to the paid blog — being on it opens the members-only content. Because it updates itself from the field, access follows payment with no manual admin.
| Surface | What you author there |
|---|---|
| The blog post (paid blog) | Edition graphic + PDF, the Weekly Analysis, the advisory, the Read More teaser cut. |
| The master sheet → HubDB | The regional MSI feed — source-traced links, grouped by region. |
The post pulls its regional cards from HubDB automatically, matched by an edition key. You never hand-build the cards — you fill a spreadsheet and press a button.
Done once per person who will push. If the sheet already has a HubDB menu (in the Google Sheet menu bar, after “Help”) and Test connection is green, skip this.
Settings ▸ Integrations ▸ Private Apps (or the service-key path) ▸ create ▸ Scopes: tick HubDB (read & write) ▸ copy the token (pat-…).
Master sheet ▸ Extensions ▸ Apps Script ▸ paste mib-hubdb-sync.gs ▸ Save ▸ reload. A HubDB menu appears in the Google Sheet menu bar (after “Help”).
In the sheet, Menu ▸ HubDB ▸ Set HubSpot token… ▸ paste. It's stored in the script, never in a cell.
In the sheet, Menu ▸ HubDB ▸ ✓ Test connection → green "Connected ✓" = ready.
In the paid blog, clone "MIB TEMPLATE PAID". Rename it and set the slug to mib-YYYY-MM-DD.
Graphic → set the Featured Image (picker). PDF → select the "Download… (PDF)" button and use the link tool → Link to a file. Weekly Analysis → type. Move the Read More separator if needed. No source code.
Sheet ▸ ① Weekly feed tab, cell B3: type the same slug tail, e.g. mib-2026-07-07. Must match exactly.
Each link: paste the Source URL in column A, pick the Region from the dropdown. Regions with no news → leave empty.
In the sheet, Menu ▸ HubDB ▸ Fill headlines & dates. Review — type in any blank dates by hand.
In the sheet, Menu ▸ HubDB ▸ Push this edition. Confirm the dialog. It sends the regions to HubSpot, replacing just this edition's rows.
In the sheet, Menu ▸ HubDB ▸ Create free summary. It creates a free-blog draft (graphic + subscribe button + placeholder). Write the short summary in that free draft.
Open the paid post — region cards render. When it's right, publish the paid edition and the free summary (publishing the free post notifies MIB Free subscribers).
B3 = the last part of the post's URL. Mismatch → the post shows no regions.① Weekly feed tab, its column headers, or the HubDB table. The sync matches them by name.AREA · Purpose; edition key & slug mib-YYYY-MM-DD. Keeps tables findable (HubDB has no folders).| Symptom | Cause & fix |
|---|---|
| No HubDB menu (in the sheet) | Script not installed / sheet not reloaded. Paste script ▸ Save ▸ reload. Still missing → run onOpen once from the editor and Allow. |
| Test connection 401 | Token wrong/blank/rotated. Re-copy ▸ Set HubSpot token… again. |
| Test connection 403 | Missing scope. Add HubDB (read & write) ▸ save ▸ test again. |
| Post shows no regions | Edition-key mismatch. Make B3 exactly the post slug tail ▸ push again. |
Date looks like Sat Jun 06 2026… | Old script. Re-paste the latest mib-hubdb-sync.gs. |
| Push says "Unknown region" | A Region isn't a table option. Use the dropdown; don't free-type. |
A short, ordered, reversible sequence. Nothing affecting live readers switches until this day.
| # | Step | Why the order |
|---|---|---|
| 1 | Confirm the paid blog is locked and has real editions | Don't open the doors before the room is furnished and the lock works |
| 2 | Fix & repoint every button/email link to its live page | No subscriber lands on a broken link |
| 3 | Point "subscribe" at the live checkout | New sign-ups now flow to real payment |
| 4 | Switch on the payment & access automations | Only after the test purchase passes |
| 5 | Final live check (a real login sees the full edition; a non-member is walled) | Proves the loop before announcing |
| 6 | Retire the old bits (legacy access groups, manual mailout, unused lists) | Last, once nothing depends on them |
Every step is reversible. The legacy archive is left in place untouched — it isn't part of the new paid product.
| Thing | Value |
|---|---|
| Paid blog | channel16.dryadglobal.com/en/subscriber |
| Post slug / edition key | mib-YYYY-MM-DD |
| Access field / members list | mib_tier = paid |
| HubDB table | MIB · Regional MSI feed (id 355219068) |
| Regions | Europe · Middle East · Africa · Asia & Australia · Americas · Cyber |
| Sync script / menu | mib-hubdb-sync.gs |
| Menu actions | ✓ Test connection · Fill headlines & dates · Push this edition · Set token |