Expand my Community achievements bar.

Join us January 15th for an AMA with Champion Achaia Walton, who will be talking about her article on Event-Based Reporting and Measuring Content Groups!
SOLVED

issue with marketing channel attribution after upgrading to shopify checkout extensibility

Avatar

Level 3

Howdy Adobe Community,

Is anyone experiencing issue with their Marketing channel attribution with shopify checkout extensibility?

We are noticing new session start in our marketing channel reporting when user proceeds to the order comfirmation page (checkout_completed). Most of our traffic are being attributed to "Direct" which is impacting our paid media campaign reporting.

 

Digging into the data I can see Visit number =1 and Hit Depth = 1 is showing as order confirmation 


We have VisitorID / ECID enabled on the site for cross domain tracking and this appears to be persisting when I tested in our staging environment but it appears that a new visitorid is getting regenerated when user completes an order which is distrupting the continuity of session tracking.

Any insights or assistance you can provide would be greatly appreciated as I can pin point what is going on.. as checkout extensibility is pretty much a sandbox.

Any one experiencing this and how did you go about resolving.. I have reached out to shopify and still waiting on a response.

1 Accepted Solution

Avatar

Correct answer by
Community Advisor and Adobe Champion

When you test your flow, can you check that the use is retaining the same ECID between your main site and your Shopify? While the ECID / Visitor ID service may be turned on, if the Shopify is potentially getting third party cookies, it may not be identifying the users as the same person (so new user, new session, etc).

 

Now, there is an appendVisitorIDsTo plugin (https://experienceleague.adobe.com/en/docs/id-service/using/id-service-api/methods/appendvisitorid) that you can add to append the visitor information to the Shopify link to pass the information about the user to the other site..

 

However, I have also seen many complaints here that the other site isn't using them (which I though was supposed to be a part of this plugin... I cannot confirm since I am not using this at this time. Maybe they only installed it on one side of the implementation...)

 

However, that said, you can create your own logic to force the ECID cookie based on the passed ECID in the URL which should compensate if it doesn't work out of the box.

View solution in original post

16 Replies

Avatar

Correct answer by
Community Advisor and Adobe Champion

When you test your flow, can you check that the use is retaining the same ECID between your main site and your Shopify? While the ECID / Visitor ID service may be turned on, if the Shopify is potentially getting third party cookies, it may not be identifying the users as the same person (so new user, new session, etc).

 

Now, there is an appendVisitorIDsTo plugin (https://experienceleague.adobe.com/en/docs/id-service/using/id-service-api/methods/appendvisitorid) that you can add to append the visitor information to the Shopify link to pass the information about the user to the other site..

 

However, I have also seen many complaints here that the other site isn't using them (which I though was supposed to be a part of this plugin... I cannot confirm since I am not using this at this time. Maybe they only installed it on one side of the implementation...)

 

However, that said, you can create your own logic to force the ECID cookie based on the passed ECID in the URL which should compensate if it doesn't work out of the box.

Avatar

Level 3

Thanks  for the quick response @Jennifer_Dungan I will go through the implementation and give you an update.. Question though, do I need to pull the updatedURL into an eVar for monitoring purposes?

Avatar

Level 3

@Jennifer_Dungan  should I include both my staging domain and production domain in the below?

var adbeDomains = ["marketo.com", "figma.com", "workfront.com"];

 

Avatar

Community Advisor and Adobe Champion

Depending on how well your staging replicates production is really the biggest factor about whether you can use this to test...

 

But even before digging into the Raw Data, there's a lot you can test from the front end.

 

Using the Platform Debugger, start on your website (make note of the ECID), then click through to your Shopify site, checking the debugger at each stage... In particular the value in Experience Cloud Visitor ID, does it change between the sites...

Avatar

Level 3

Hi @Jennifer_Dungan the code doesn't seem to be doing anything... is there a way to refactor it or maybe added it to a rule..
Further digging on my side shows the issue of regeneration is isolated to safari browser.. Chrome seems to be doing fine but safari seem to be regenerating new mid every time I navigate to checkout even with the appendVisitorIDSTo plugin..

Any easier way of refactoring the code?

Avatar

Community Advisor and Adobe Champion

Hmm so I suspect this is part of the Safari ITP preventing the third party cookies from being set, and as I have seen others report, the appendVisitorIDSTo plugin doing the first part (appending), but not doing the second part (Updating the first party ECID to the correct value).

 

I did some digging and found this:

https://experienceleague.adobe.com/en/docs/id-service/using/id-service-api/configurations/overwrite-...

 

Try adding this and see if that fixes the issue... I am not sure why this wouldn't be a default action? I thought it used to be.... what is the point of appending the IDs if you aren't going to use them??

Avatar

Level 3

Thanks @Jennifer_Dungan   I noticed this variable in the Experience Cloud ID service extension. Any idea if this works

Screenshot 2024-11-18 at 16.18.05.png

Avatar

Community Advisor and Adobe Champion

ah, it should  work... give that a try!

Avatar

Level 3

ahhh using that didn't work either.. might have to write my own logic.. Any thoughts on how to do this please?

Avatar

Community Advisor and Adobe Champion

Yes, basically, here is what I would do:

 

1. Create a Data Element using Query String Parameter (and grabbed the passed ECID) - make sure this will default to no value if there is no passed ECID.

2. I would add a custom code rule that loads as soon as possible... maybe using the Library Loaded trigger, to ensure that the cookie is updated ASAP.

 

The code should look something like:

var newECID = _satellite.getVar('queryStringECID');

if (newECID){
  var now = new Date();
  var time = now.getTime();
  var expireTime = time + 1000 * 60 * 60 * 24 * 730;
  now.setTime(expireTime);
  var cookieName = "s_ecid";
  var cookieValue = "MCMID|" + newECID;
  cookieValue = encodeURIComponent(cookieValue);
  var cookieString = "";

  cookieString = cookieName +'=' + cookieValue + ';expires=' + now.toGMTString() + ';path=/;domain=domain.com';
  document.cookie = cookieString;
}

 

First I grab the value of the Data Element into a variable "newECID", then I check IF I have a value (otherwise don't overwrite what is there... we don't want to accidentally clear the value).

 

Make sure to reference the name of your Data Element (I used "queryStringECID" as a sample), and make sure to change "domain.com" in the cookie string to the correct domain where your s_ecid cookie is set (so that you overwrite the cookie, and don't create a second one on a different domain variant)

 

 

While you could use:

var newECID = _satellite.getVar('queryStringECID');

if (newECID){
document.cookie = "s_ecid=MCMID%7C" + newECID;
}

 

There is no guarantee this will set to the correct domain (particularly if your Shopify is using a subdomain, but the cookie is set to the main domain), so you might end up with two s_ecid cookies... but give it a try... it might work.

 

 

This should overwrite the ECID and now should send this visitor id on your tracking call, instead of the newly generated one... 

Avatar

Level 3

Thanks @Jennifer_ Dungan  I will try this and let you know how I get on... 

Avatar

Level 3

Hi @Jennifer_Dungan  quick update.. I am infact ending up with 2 ECIDs on the shopify site.. How do I overwrite as using the ECID overwritemcid variable doesnt seem to be working for me.. Should I try wrapping the code in the below perhaps.. ?

qq- WHAT

  1. var visitor = Visitor . getInstance ( "INSERT-MARKETING-CLOUD-ID-HERE" , {
  2. //Set overwrite property
  3. overwriteCrossDomainMCIDAndAID : true
  4. });

Avatar

Community Advisor and Adobe Champion

You need to match the "domain" exactly as your Shopify site is setting the original ECID cookie... variations will create new cookies if they don't match exactly...

 

If you would be willing to send me a link to your Shopify site (in private messaging) I could provide more specific code to overwrite the cookie.

 

As for the official plugin, I don't actually use it.. so I am not 100% sure how to make it fully function (i.e. pick up the passed value, overwrite the ECID).. but if you can properly overwrite the cookie yourself, that will at least be a stopgap...