← Back to the journal

Connect content ideas, publishing records, and CRM campaigns

Use stable content IDs and a shared worksheet to connect ideas, published assets, and CRM campaigns while keeping attribution limits clear.

A hand checks a publication record as orange paths connect content ID cnt-0042 to separate website, social, and email publication IDs and campaign cmp-0017.
Conceptual editorial artwork · Generated with AI for FindVex

Give each content item a permanent ID, then create a separate publication record for every place it appears. Carry those IDs into your campaign records so a title change or delayed release doesn’t break the connection.

For a small AI or SaaS team, a spreadsheet can hold this together. Start with one piece whose draft, scheduled posts, and campaign record are scattered across tools. The worksheet below connects the original reader question to what went live and any recorded customer response.

Give the content a permanent identity

Assign an ID when an idea becomes an item the team intends to develop. A sequence such as cnt-0042 works if one person or system controls assignment. Never recycle an ID.

Keep the ID independent of the title, channel, publication date, and campaign name. All four can change. Store it in a dedicated field wherever possible. If a tool lacks suitable fields, put it in an internal description alongside a link to the main record.

Use three identifiers:

Identifier What it identifies Example
Content ID The underlying editorial item cnt-0042
Publication ID One release or placement of that item pub-0102
Campaign ID The marketing effort using it cmp-0017

An article, its LinkedIn adaptation, and its newsletter placement can share a content ID while having different publication IDs. A later campaign can reuse the article without changing its identity.

Choose a boundary for adaptations. A shorter version answering the same question can remain under the original content ID. A piece with a different reader task or argument should receive a new ID, with a link to its parent item if useful. Treat corrections as revisions. When a change matters to later analysis, save the version used and give it a revision number.

Build a content register and publication log

Keep one row per editorial item in the content register and one row per placement in the publication log. That gives each release its own URL, timestamp, and status.

Use these fields as your starting template:

Content register field What to record
Content ID Permanent value, such as cnt-0042
Working title Current descriptive name
Reader question The specific task the piece helps with
Evidence reference Source link, audience label, and original wording, kept separate from your interpretation
Owner Person responsible for the next handoff
Editorial status Idea, drafting, review, approved, or archived
Draft and revision link Working copy and saved version used for publication

A support question from an enterprise admin may suggest a useful article, but it does not establish what every trial user needs. The pain-point evidence sheet provides a method for preserving that audience context.

The publication log records what happened to each placement:

Publication log field What to record
Publication ID Unique value for this release
Content ID and revision Item and version used
Channel and native ID Destination plus the identifier assigned by that platform
Publication status Planned, scheduled, live, failed, or withdrawn
Planned time Intended release time, including time zone
Published at Actual release time, including time zone; leave blank until release
Live URL or send record Public location or durable email send record
Campaign reference at release Campaign ID and link to its record
Destination and tagged URL Where the placement sends readers, if applicable
Handoff notes Failure, correction, or unresolved issue and its owner

A spreadsheet can connect these records through matching IDs. Airtable supports linked records for one-to-many and many-to-many relationships. Its documentation describes a junction table when a relationship needs its own information, such as a reuse date. Airtable’s relationship guide.

Begin with one campaign reference per publication. If a release belongs to several campaigns, add a separate list of publication-to-campaign pairs. Keep the release itself as one record so it isn’t counted twice.

Decide where each field gets updated

The content register can own the reader question, editorial status, and owner. The publishing tool supplies the native post ID, actual release time, and live URL. The CRM or campaign register owns the campaign’s objective and ID.

Write these assignments beside your field definitions. Other tools can hold references or copies, but anyone resolving a mismatch needs to know which record to check.

Use this handoff sequence:

  1. Before scheduling, confirm the content ID, approved revision, owner, and campaign reference.
  2. After release, capture the native ID, actual timestamp, and live URL or send record.
  3. Open the released asset and check its destination link before marking the handoff complete.

Keep editorial approval separate from publication status. An approved article can have a failed social release and a successful email release at the same time. Record a failed attempt in the handoff notes; update the placement’s status when you verify a successful release.

Manual updates are reasonable at low volume. Automate once the team can follow the field definitions and handoff rules consistently.

Preserve the campaign reference used at release

Store your campaign ID alongside the CRM’s native campaign identifier when they differ. If your current plan lacks a campaign feature, use a campaign sheet with an ID, objective, owner, and related CRM links.

Check the platform’s association rules before designing automatic updates. HubSpot’s available campaign assets depend on the subscription, and support for multiple campaigns varies by asset type. Changing the campaign of a published HubSpot social post does not transfer its link traffic to the new campaign. HubSpot’s campaign association documentation.

Preserve the campaign reference and tagged destination used at release. Record later associations separately, with the date and reason for the change. This lets you distinguish the campaign attached to the original link from a campaign added for later reuse.

Connect tracking values to recorded responses

For referral links to your site, use your campaign ID in utm_id and a publication identifier in utm_content. Include consistent source, medium, and campaign values. Google defines utm_id as a campaign identifier and utm_content as a way to distinguish creatives; parameter values are case sensitive. Google Analytics URL parameter guidance.

Using a publication ID in utm_content is a naming convention you choose. It does not create a CRM integration.

To connect a submitted form to those values, test the path from the tagged link through the form to the CRM record or interaction. Record the expected values, what arrived, and where they were stored. A tagged visit alone does not identify a contact, and a campaign association does not establish that the content caused a sale.

Keep the evidence types separate: a tagged visit, a form submission with captured values, a buyer’s self-report, or a manually linked sales activity. Use the social referral tracking test to check the link portion of that path.

Worked example: one question, three releases

Suppose a two-person AI meeting-notes company wants to answer whether users can correct a generated summary before sharing it. This is a hypothetical workflow.

The founder creates cnt-0042, records the question, and links the support note that prompted it. After approval, revision r1 has three publication records:

Publication ID Placement Content reference Campaign
pub-0101 Website article cnt-0042, r1 cmp-0017
pub-0102 LinkedIn adaptation linking to the article cnt-0042, r1 cmp-0017
pub-0103 Newsletter placement linking to the article cnt-0042, r1 cmp-0017

The campaign is named editable-summaries. The LinkedIn destination uses these values:

utm_source=linkedin
utm_medium=social
utm_campaign=editable-summaries
utm_id=cmp-0017
utm_content=pub-0102

The newsletter uses utm_source=newsletter, utm_medium=email, and utm_content=pub-0103, retaining the campaign values.

The article’s title changes before approval, so the founder updates the title without changing any IDs. The newsletter sends a day late; its planned and actual timestamps show the difference. The first LinkedIn attempt fails. The founder notes the failure, then records the successful release’s native ID, URL, and timestamp after retrying and checking it.

If a demo request later contains the captured value pub-0102, the team can trace that label to the LinkedIn placement’s record. That is evidence of the captured label, not proof that the post caused the request. If the value is missing, the publication connection stays unknown unless another identified source supplies evidence. Assigning the most recent post would hide the gap.

Copy a handoff check for your next release

Use the field tables to set up the two registers, then complete this record for one placement:

Content ID and saved revision:
Publication ID:
Reader question:
Owner:
Channel and native ID:
Campaign ID and campaign record link:
Planned release time and time zone:
Actual release time and time zone:
Live URL or send record:
Tagged destination used at release:
Live asset and destination checked by:
Expected tracking values:
Observed values and CRM record or interaction:
Evidence type, or unknown:
Failure or unresolved mismatch:
Next action, owner, and check date:

Leave fields blank until the relevant event occurs, then record what you observed. Use unknown when an expected connection cannot be established.

Before automating imports, test whether a repeated import updates the existing publication instead of creating another one. Match on publication ID or a verified native platform ID, and send unmatched or conflicting records to a review queue. Titles can change, so they are poor matching keys.

Complete one piece’s records before expanding

Choose one upcoming piece and record every planned placement. Follow it through release, verify each URL or send record, and run a test submission through the tracking path. Assign the first unresolved mismatch to an owner.

Review missing URLs, broken campaign references, and duplicate releases to judge whether the workflow is complete. Evaluate the content separately through qualified inquiries or another defined customer action, retaining the limits of the evidence.

Finish that piece’s records and repair the first broken handoff before extending the process to the rest of the calendar.