Skip to main content

Migration from v1

This guide covers breaking changes and migration steps from Sealmetrics Tracker v1 to v2.

Summary of Changes

Aspectv1 (Legacy)v2 (Current)
Installation~15 lines of JavaScript1 line (script tag)
Initializationsm('init', 'ACCOUNT_ID')Automatic
Pageview trackinginstance.track('pageview')Automatic
Event syntaxsm('event', 'type', {amount: 99})sealmetrics.conv('type', 99)
Microconversionssm('event', 'type', {...})sealmetrics.micro('type', {...})
Content groupingcontent_grouping in options?group=xxx in URL or sealmetrics({ group: 'xxx' })
adin parameterSupportedRemoved
CookiesUsedNone
localStorageUsedNone
Size~15 KB1,313 bytes (gzipped)

Breaking Changes

1. Installation Changed

v1 (Remove this):

<script>
/* SealMetrics Tracker Code */
(function() {
var options = {
account: '68a4a04603963e02af56487f',
event: 'pageview',
use_session: 1,
content_grouping: 'blog'
};
var url="//app.sealmetrics.com/tag/v2/tracker";
function loadScript(callback){
var script=document.createElement("script");
script.src=url;
script.async=true;
script.onload=function(){
if(typeof callback==="function"){callback();}
};
document.getElementsByTagName("head")[0].appendChild(script);
}
loadScript(function(){
options.id=Math.floor((Math.random()*999)+1);
if(window.sm){
var instance=new window.sm(options);
instance.track(options.event);
}
});
})();
/* End SealMetrics Tracker Code */
</script>

v2 (Replace with):

<script src="https://t.sealmetrics.com/t.js?id=68a4a04603963e02af56487f&group=blog" defer></script>

2. Event Tracking Syntax Changed

v1 (Old syntax):

sm('event', 'purchase', { amount: 99.99, properties: { order_id: '123' } });

v2 (New syntax):

sealmetrics.conv('purchase', 99.99, { order_id: '123' });

3. Microconversions Now Separate

v1 (Events without amount were treated as conversions):

sm('event', 'add_to_cart', { properties: { product_id: 'SKU-123' } });

v2 (Explicit microconversion function):

sealmetrics.micro('add_to_cart', { product_id: 'SKU-123' });

4. Content Grouping Syntax Changed

v1:

var options = {
account: 'ACCOUNT_ID',
content_grouping: 'blog'
};

v2 (Option A: URL parameter):

<script src="https://t.sealmetrics.com/t.js?id=ACCOUNT_ID&group=blog" defer></script>

v2 (Option B: JavaScript):

sealmetrics({ group: 'blog' });

5. adin Parameter Removed

The adin parameter is no longer supported. Ad click IDs are now detected automatically from URL parameters:

Click IDAutomatically Detected
gclid (Google Ads)Yes
msclkid (Microsoft Ads)Yes
yclid (Yandex)Yes
ttclid (TikTok)Yes
fbclid (Meta)No (requires UTM parameters)

6. Global Variable Names

v1:

sm('event', 'purchase', {...});

v2 (all three are equivalent):

sealmetrics.conv('purchase', 99.99);
sm.conv('purchase', 99.99);
_sm.conv('purchase', 99.99);

The sm variable still works but now refers to the same function as sealmetrics.

Migration Steps

Step 1: Replace Installation Code

Remove the entire v1 script block and replace with:

<script src="https://t.sealmetrics.com/t.js?id=YOUR_ACCOUNT_ID" defer></script>

If you used content_grouping, add it as URL parameter:

<script src="https://t.sealmetrics.com/t.js?id=YOUR_ACCOUNT_ID&group=blog" defer></script>

Step 2: Update Conversion Tracking

Find all instances of:

sm('event', 'EVENT_NAME', { amount: VALUE, properties: {...} });

Replace with:

sealmetrics.conv('EVENT_NAME', VALUE, {...});

Before:

sm('event', 'purchase', { amount: 149.99, properties: { order_id: 'ORD-123', currency: 'EUR' } });

After:

sealmetrics.conv('purchase', 149.99, { order_id: 'ORD-123', currency: 'EUR' });

Step 3: Update Microconversion Tracking

Find all instances of events without monetary value:

sm('event', 'EVENT_NAME', { properties: {...} });

Replace with:

sealmetrics.micro('EVENT_NAME', {...});

Before:

sm('event', 'add_to_cart', { properties: { product_id: 'SKU-456' } });

After:

sealmetrics.micro('add_to_cart', { product_id: 'SKU-456' });

Step 4: Remove Manual Pageview Calls

v2 tracks pageviews automatically. Remove:

instance.track('pageview');
// or
sm('track');

Step 5: Remove adin Parameter

If you had:

var options = {
account: 'ACCOUNT_ID',
adin: 'google'
};

Remove adin. Click ID detection is now automatic.

Step 6: Update Dynamic Content Grouping

If you set content grouping dynamically:

Before:

var options = {
content_grouping: getPageType()
};

After:

sealmetrics({ group: getPageType() });

Complete Migration Example

Before (v1)

<!-- Header -->
<script>
(function() {
var options = {
account: '68a4a04603963e02af56487f',
event: 'pageview',
use_session: 1,
content_grouping: 'product'
};
var url="//app.sealmetrics.com/tag/v2/tracker";
function loadScript(callback){
var script=document.createElement("script");
script.src=url;
script.async=true;
script.onload=function(){
if(typeof callback==="function"){callback();}
};
document.getElementsByTagName("head")[0].appendChild(script);
}
loadScript(function(){
options.id=Math.floor((Math.random()*999)+1);
if(window.sm){
var instance=new window.sm(options);
instance.track(options.event);
}
});
})();
</script>

<!-- Add to cart button -->
<script>
document.querySelector('.add-to-cart').addEventListener('click', function() {
sm('event', 'add_to_cart', { properties: { product_id: 'SKU-456' } });
});
</script>

<!-- Thank you page -->
<script>
sm('event', 'purchase', {
amount: 149.99,
properties: {
order_id: 'ORD-123',
currency: 'EUR'
}
});
</script>

After (v2)

<!-- Header -->
<script src="https://t.sealmetrics.com/t.js?id=68a4a04603963e02af56487f&group=product" defer></script>

<!-- Add to cart button -->
<script>
document.querySelector('.add-to-cart').addEventListener('click', function() {
sealmetrics.micro('add_to_cart', { product_id: 'SKU-456' });
});
</script>

<!-- Thank you page -->
<script>
sealmetrics.conv('purchase', 149.99, {
order_id: 'ORD-123',
currency: 'EUR'
});
</script>

Verification

After migration:

  1. Open browser DevTools > Network tab
  2. Filter by "event"
  3. Navigate your site and perform actions
  4. Verify POST requests to /event return 204

Check the Sealmetrics dashboard after 5 minutes to confirm data is flowing.

Rollback

If you need to rollback, keep your v1 code commented out until you verify v2 is working:

<!-- v2 (active) -->
<script src="https://t.sealmetrics.com/t.js?id=YOUR_ACCOUNT_ID" defer></script>

<!-- v1 (backup - remove after verification)
<script>
(function() {
...v1 code...
})();
</script>
-->

Need Help?

If you encounter issues during migration, contact support with:

  • Your account ID
  • The v1 code you're migrating from
  • Any error messages in browser console