Migration from v1
This guide covers breaking changes and migration steps from Sealmetrics Tracker v1 to v2.
Summary of Changes
| Aspect | v1 (Legacy) | v2 (Current) |
|---|---|---|
| Installation | ~15 lines of JavaScript | 1 line (script tag) |
| Initialization | sm('init', 'ACCOUNT_ID') | Automatic |
| Pageview tracking | instance.track('pageview') | Automatic |
| Event syntax | sm('event', 'type', {amount: 99}) | sealmetrics.conv('type', 99) |
| Microconversions | sm('event', 'type', {...}) | sealmetrics.micro('type', {...}) |
| Content grouping | content_grouping in options | ?group=xxx in URL or sealmetrics({ group: 'xxx' }) |
adin parameter | Supported | Removed |
| Cookies | Used | None |
| localStorage | Used | None |
| Size | ~15 KB | 1,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 ID | Automatically 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:
- Open browser DevTools > Network tab
- Filter by "event"
- Navigate your site and perform actions
- Verify POST requests to
/eventreturn 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