[SalesForce] Triggered Send Data Extension – Updating without Primary Key

I have the following Use Case. On a third party Website a User can subscribe for a Newsletter with the email address only. The subscription triggers a Triggered Email in Marketing Cloud and writes the User in a Triggered Send Data Extension.

In a second step, the User is forwarded to a second form and can now add additional Data like Street, Name, Preferences etc. That Information is updated in the triggered send data extension using "Insert Data Extension Row by Key" (https://developer.salesforce.com/docs/atlas.en-us.noversion.mc-apis.meta/mc-apis/putDataExtensionRowByKey.htm)

As subscriberkey and emailaddress can not be tagged as Primary Key in a triggered send data extension, the value "email" gets passed to the Triggered Send Data Extension as primary key and is used as Identifier for Updating the Subscriber Information.

So far that process works – it just has the "problem" that a subscriber can only insert his email address one time. A second time the triggered send would not be executed as the primary key "email" is already written in the data extension. So if the Confirmation Email lands in spam or there is any other reason a subscriber wants to resend that confirmation email, there is currently no opportunity. Which is not a perfect situation – but I can not find another solution to build that two step process via REST API. Do you guys have any idea or input?

Best Answer

Triggered Send Data Extensions are meant to be a log of API calls, not a primary source for subscriber data -- which is why Email Address and Subscriber Key cannot be primary keys.

With no primary key, there's nothing stopping multiple emails being triggered for a single subscriber. So unless you've added some other primary key (not recommended) or are utilizing an Exclusion Script), there will be duplicates in your TSD DE.

I'd suggest a single master Data Extension and a set of Queries in an Automation to take rows from your Triggered Send Data Extensions and upsert them into your master.

Or, as you mentioned, just upsert rows in your Data Extension directly from your page.