We are having an issue with our primaryKeys (email address) containing the plus (+) sign. Here is some example code from a node-fuel implementation for reference:

    method: 'PUT',
    url: 'https://www.exacttargetapis.com/hub/v1/dataevents/key:myKey/rows/UserId:[email protected]',
    json: true,
    body: myjsonObject
}, function (error, request, body) {
        console.log("There was an error");
    } else {
        //handle response

This code works as expected. However, changing the UserId to [email protected] fails silently with a 404. (I've tried substituting the plus sign for %2b and have tried encodeURIComponent(UserId) end even tried uri: instead of url: all with the same results) Further, setting "UserId":"[email protected]" in the jsonObject essentially makes the record inaccessible through the API.

  • not too familiar with FuelAPI but looking through their docs I found this method : code.exacttarget.com/api/address-validateemail validateemail. Where are u making the callout from if it is salesforce can u check if the UserId.contains('+') and replace it with ('').
    – Rao
    Commented Feb 10, 2014 at 18:49
  • I actually forget to add an exacttarget tag to my post (just edited), but this is where exacttarget is directing their Q&A now :/
    – David
    Commented Feb 10, 2014 at 20:24
  • 3
    @Akrikos: ExactTarget is beginning to be more active on this site. See meta.salesforce.stackexchange.com/questions/505/…
    – Mike Chale
    Commented Feb 10, 2014 at 20:32
  • @rao: I cannot replace '+' with '' as [email protected] is not the same as [email protected]. Gmail disregards everything after the '+' when delivering messages. ValidateEmail validates so long as I use %2b instead of '+'
    – David
    Commented Feb 11, 2014 at 18:14
  • 1
    Thanks for point that out @MikeChale. I've removed my comment and deleted my guess post as others felt it was unhelpful.
    – Akrikos
    Commented Feb 12, 2014 at 1:22

1 Answer 1


It does look like that service does not support passing plus signs in the key value however there is a very similar route for rowset which I tested and can confirm that it does support it since the keys are passed in the request body instead of the URL. More details on this route can be found at:


  • This works perfectly.. Thanks! On a side note, is there a limit on the number of objects I can throw at rowset in one call?
    – David
    Commented Feb 12, 2014 at 19:57
  • 2
    I don't believe there is any limit here outside of scaling in large numbers, but even then it shouldn't be too terrible, and you can also do the async version. Commented Feb 12, 2014 at 21:45

You must log in to answer this question.

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