HubSpot Marketing Email endpoint upgraded to v3
We’ve migrated the HubSpot Marketing Email endpoint to a new v3 version in Weld, aligned with HubSpot’s latest Marketing Emails API v3.
The new endpoint is now the source of truth for all new and updated marketing email data going forward.
The existing table remains available with historical data only, but it will not receive new records.
👉 To keep your models working on new data, you’ll need to switch your queries to the new marketing_email_v3 table.
Full announcement:
https://developers.hubspot.com/changelog/marketing-email-api-v3-released-to-general-availability-and-upcoming-sunset-for-v1
What happens to the old table?
- The old
marketing_emailtable remains available - It contains historical data only
- No new emails or updates will be written to it
- It can be used for backfills or comparisons, but active models must move to v3
Why this change?
HubSpot has deprecated the legacy Marketing Email API and introduced v3 as the supported and future-proof API.
Compared to the legacy endpoint, the v3 API:
- Uses explicit and consistently named fields
- Groups related configuration under clear prefixes
- Removes several legacy or loosely structured fields
- Aligns with HubSpot’s modern API conventions across products
Weld’s new marketing_email_v3 table reflects this structure directly.
🔄 Schema changes (old → v3)
The v3 schema is not a drop-in replacement for the legacy table.
While many core identifiers remain, a significant number of fields were renamed, reorganised, or removed.
Identifiers, timestamps and state
Legacy (marketing_email) | v3 (marketing_email_v3) |
|---|---|
created | created_at |
updated | updated_at |
transactional | is_transactional |
archived | archived |
state | state |
current_state | removed |
A/B testing configuration
| Legacy | v3 |
|---|---|
ab | is_ab |
ab_hours_to_wait | testing_hours_to_wait |
ab_sample_size_default | testing_ab_sample_size_default |
ab_sampling_default | testing_ab_sampling_default |
ab_success_metric | testing_ab_success_metric |
ab_test_percentage | testing_ab_test_percentage |
ab_variation | testing_is_ab_variation |
| — | testing_ab_status |
| — | testing_test_id |
Sender configuration
| Legacy | v3 |
|---|---|
from_name | from_from_name |
reply_to | from_reply_to |
custom_reply_to | from_custom_reply_to |
custom_reply_to_enabled | removed |
Recipient targeting and suppression
| Legacy | v3 |
|---|---|
mailing_lists_included | to_contact_lists_include |
mailing_lists_excluded | to_contact_lists_exclude |
vids_included | to_contact_ids_include |
vids_excluded | to_contact_ids_exclude |
is_graymail_suppression_enabled | to_suppress_graymail |
| — | to_limit_send_frequency |
Web version and URL handling
| Legacy | v3 |
|---|---|
domain | webversion_domain |
resolved_domain | active_domain |
published_url | webversion_url |
slug | webversion_slug |
page_redirected | webversion_is_page_redirected |
| — | webversion_enabled |
Content and body fields
| Legacy | v3 |
|---|---|
email_body | removed |
layout_sections | removed |
sections | removed |
primary_rich_text_module_html | content_widgets_primary_rich_text_module_body_html |
template_path | content_template_path |
RSS email configuration
| Legacy | v3 |
|---|---|
rss_email_url | rss_data_url |
rss_email_image_max_width | rss_data_blog_image_max_width |
use_rss_headline_as_subject | rss_data_use_headline_as_subject |
max_rss_entries | rss_data_max_entries |
What you need to do
-
Update your models to read from
{{ raw.hubspot.marketing_email_v3 }} -
Review any models that depend on removed or renamed fields such as:
email_bodylayout_sectionssectionsvids_*mailing_lists_*
-
Update field references to their new
from_*,to_*,testing_*, orwebversion_*equivalents where relevant.
Example SQL migrations (old → v3)
Minimal change (table switch + timestamps)
1select
2 marketing_email_id
3 , name
4 , subject
5 , state
6 , published_at
7 , published_by_name
8 , created_at
9 , updated_at
10from
11 {{ raw.hubspot.marketing_email_v3 }}Sender fields
1select
2 marketing_email_id
3 , from_from_name
4 , from_reply_to
5 , from_custom_reply_to
6from
7 {{ raw.hubspot.marketing_email_v3 }}A/B testing
1select
2 marketing_email_id
3 , is_ab
4 , testing_hours_to_wait
5 , testing_ab_success_metric
6 , testing_ab_test_percentage
7 , testing_is_ab_variation
8 , testing_ab_status
9 , testing_test_id
10from
11 {{ raw.hubspot.marketing_email_v3 }}Recipient targeting
1select
2 marketing_email_id
3 , to_contact_lists_include
4 , to_contact_lists_exclude
5 , to_contact_ids_include
6 , to_contact_ids_exclude
7 , to_contact_ils_lists_include
8 , to_contact_ils_lists_exclude
9 , to_suppress_graymail
10 , to_limit_send_frequency
11from
12 {{ raw.hubspot.marketing_email_v3 }}Web version and URLs
1select
2 marketing_email_id
3 , webversion_domain
4 , active_domain
5 , webversion_url
6 , webversion_slug
7 , webversion_is_page_redirected
8 , webversion_enabled
9from
10 {{ raw.hubspot.marketing_email_v3 }}Primary content
1select
2 marketing_email_id
3 , content_widgets_primary_rich_text_module_body_html
4 , content_template_path
5from
6 {{ raw.hubspot.marketing_email_v3 }}Why did some fields disappear in v3?
Some fields available in the legacy table are no longer exposed by HubSpot’s v3 API. This reflects intentional changes in how HubSpot models marketing emails internally.
Layout-driven content
Legacy layout fields were replaced by a single rendered HTML body:
content_widgets_primary_rich_text_module_body_html
VID-based targeting
Internal VID targeting was replaced with explicit contact and list targeting.
Mailing lists
Mailing lists are now split into explicit include/exclude semantics and list types, including ILS lists.
URLs and domains
Email web rendering is now modeled explicitly via webversion_* fields and active_domain.
Implicit fields
Some legacy fields were removed because their meaning can be derived from state or configuration:
custom_reply_to_enabled, current_state, visible_to_all
Final note
These changes originate from HubSpot’s API design, not Weld-specific decisions.
Weld’s goal with marketing_email_v3 is to mirror HubSpot’s supported API as closely as possible while providing a stable, explicit schema for analytics.






