1

I have a journey Where in user will enter 2 of the same custom activities

enter image description here

Happening Right Now

User enters custom activity 1 and sends product information to a webservice to get a product quotation now during the waiting period, the product information was updated manually or through api, Now users enter custom activity 2, even though the product information was updated in the waiting period. It still sends the old product information to the webservice thus receiving an old quotation.

Correct Scenario

User enters custom activity 1 and sends product information to a webservice to get a product quotation now during the waiting period, the product information was updated, the product information update can either be done manually or through api. Now once the user enters custom activity 2 it sends the updated product information to a webservice to receive an updated quotation.

What i need is to be able to get the updated information of the user in the journey.

I use parseEventSchema to get the columns of the data extension and use payload to pass the bindings to my inarguments in my config.json.

Now in my execute function, I can get the data of the user that entered the journey.

Sample Data Extension Column

PrimaryKey
CampaignMemberId
Product Name
Product Quantity
Product Group

This is what my execute method in custom activity looks like

    console.log("EXECUTE HAS BEEN RUN");
JWT(req.body, process.env.JWT_KEY, (err, decoded) => {

    // verification error -> unauthorized request
    if (err) {
        console.error(err);
        return res.status(401).end();
    }


    if (decoded && decoded.inArguments && decoded.inArguments.length > 0) {[]

    //Use fields in decoded.inarguments to create a request body
    //use node.js to do webservice
    //decoded args contains the data to get the token and do a marketing 
    //cloud rest api call
    var bodyStringAdvertising = JSON.stringify({
    //Sample body
    })

    var headersAdvertising = {
    //Sample header
    }

    var optionsAdvertising = { 
    method: 'POST',
    headers: headersAdvertising,
    url: '//Sample URL'
    };

    request(optionsAdvertising, function (error, response, body) {
    if (error) throw new Error(error);
    console.log('response body',body);

    //Once I get the response, I'm going to use some of the values to update 
    a row in a Data Extension
    //How Can I do that

    }).write(bodyStringAdvertising); 

    } else {
        console.error('inArguments invalid.');
        return res.status(400).end();
    }

});

console.log("end execute function!!!");
13
  • Hi imajmdf. Are the product values being updated into a DE in Salesforce Marketing Cloud? Is the Product DE connected to the customer via the Contact Builder relationships? Sep 20 '19 at 11:11
  • Hi @CameronRobert The product values are already in DE, I'm just trying to update for example a name row, from 'testing product' to 'new product' and I don't think that the DE is connected to the customer via the Contact Builder Relationship. Can this be fixed if I connect the DE to the customer? Thanks!
    – imajmdf
    Sep 20 '19 at 11:33
  • Can you update your question to include examples of the data extensions and an example of what you want the final result to look like? Understanding this will help to solve your question. Does this need to happen in Journey Builder, or could it be done in SSJS/SQL/etc? Sep 20 '19 at 13:37
  • @CameronRobert i updated the question, there's an expected scenario and current scenario. Thank you
    – imajmdf
    Sep 20 '19 at 13:56
  • @CameronRobert the end use of custom activity is to send a request to a webservice, my only issue is even though I updated the user data while he's in the journey, I'm still getting old values once it enters custom activity 2
    – imajmdf
    Sep 20 '19 at 14:04
1

Based on our conversation so far, I believe the issue you're having is the difference between Journey and Contact data.
enter image description here
You can read more here: Journey vs Contact Data
Demo use case here: Journey and Contact Data in Decision Splits

I believe you could solve your issues by changing your custom activities to lookup Contact Data, rather than the Journey data. Adam Spriggs recently updated a ticket on how to do this using the REST API here: GET method to Data Extensions

1
  • thanks a lot! I'll look this up!
    – imajmdf
    Sep 23 '19 at 6:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.