Hi Matthew,
>> So including the primary key in the link is not an option.
well, depends on your primary key. If you are using auto-numbering then I completely agree. (Personally I don't like using auto-numbering for primary keys.)
>> I looked into the AddBrowseValue function, but the value created does not look to persist on the server long enough for use in an email.
agreed. BrowseValues are session related so don't last long.
>> What I am considering is to add a key to the invoice header that contains a GUID.
You could then use _that_ key as the identifier key on your browse and form.
>> I could put code in the PreUpdate embed that would read in the record and call StoreMem.
You could, or if you just set it to use that key all the time then you save yourself some work.
Incidentally an alternative is to have a table in your dict that assigns "one time" mapping from a random string to your auto-numberd ID. This approach has the advantage that you can "time limit" your link, or limit the number of times the link can be used. Which may, or may not, be advantageous.
cheers
Bruce