I wanted to know if I can use "update contact" to add a new attribute when the contact opens an email and change their status on the data extension as "Email Opened"? Please let me know if my question is not clear. I basically want to change there status in the data extension instead of pulling it from the report.

Thank you!!

2 Answers 2


Short answer is 'Yes' you can use it.

But just keep a note:

  • You need to add a wait (like 1 or 3 or x days) activity followed by engagement split with open. Journey builder will monitor till that particular date and can use update contact to change the status. But if contact opened an email beyond these days then update contact won't work.
  • 1
    Exactly so, in addition to that, you can run in a daily or hourly basis the Data Views through an Automation to get the most updated data and integrate it with your journey using Contact Builder or directly updating the info using AMPScript.
    – fromero
    Apr 15, 2020 at 7:22

As was added by @fromero, my recommendation would be to utilize a scheduled automation with a query instead of the update contact function. This is because after the update contact is run, it will never update that contact again, meaning if they open after X days, it will never reflect that they opened the email inside your data.

By utilizing a scheduled query, you will have a recurring check against the data view (real time data) to verify if that person opened the email or not, which will reflect more accurate information inside your data.

Example query:

SELECT a.SubscriberKey,
Opened = 1
FROM [myDE] a
  SELECT TOP 1 o.SubscriberKey from [_Open] o
  WHERE o.SubscriberKey = a.SubscriberKey
  AND o.TriggererSendDefinitionObjectID = {{myTSD_ID}}
  AND o.EventDate > (CAST(GETDATE() - 1 as Date))

That being said though, if you just want this to record if they have opened by Day X, then utilizing the update contact function is the perfect solution. I would just make sure to clarify that inside your field naming convention to ensure it is easily understood and referenced correctly later.

  • Thank you for your explanation. Can you please clarify what "{{myTSD_ID}}" stands for? And would this query update the same data extension with a status opened or a date? I'm a little confused since I have used much of SQL query still. What would I need to do to see the number of prospects opened? Would I still need an engagement split in my journey builder?
    – user77790
    Apr 15, 2020 at 18:30
  • The ObjectID of your TriggeredSendDefinition - which is also called InteractionID or something for Journey Builder. This limits it to only that send Apr 15, 2020 at 20:39
  • This query would just fill in a 'TRUE' value to the Opened field in the DE. You can change it to be an actual date if you want, but does not need to be. This is meant to be referenced for if you want to see if it was opened or not. You would likely need to attach to your attribute group to utilize it though. Apr 15, 2020 at 20:46

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .