Incorrect "viewed" user in Activity

It’s great to know when a client has viewed the invoice, but it’s odd that unregistered clients are assigned my username within the activity. Is it possible to log users who are not logged in as “Guest” rather than a specific, existing, user? Here is an example for the activity for a quote, I’d rather see that Guest has viewed it, rather than thinking that I have screwed something up.

I can confirm that it wasn’t me to view the quote, by the IP (mine ends with .41.238), and even though I know who the quote was emailed to, thus I know who has likely viewed it, it would still be better to assign them “Guest” username since they would not be logged in for the system to be absolutely sure.

Instead, it logs it as if I’ve personally viewed the quote, where I’ve done no such thing.


Which version of the app are you using, we recently made changes to this part of the app.

I’ve updated to v5.3.58-C76 yesterday, this has happened today, so it happened on v5.3.58-C76.
I’ve used an automated update process, I believe it was v5.3.56 before, installed from scratch on ubuntu VM.

@david can you please confirm that the contact_id is being stored when the invoice is viewed

Is there an easy way to do so via the webUI? Otherwise, which database table should I check for this info?

Thank you

P.S. Not sure if it makes a difference, but an example above is for a Quote, not an invoice.

I believe you’d want to check the contact_id field in the activities table.


I thought the links in the emails are personalized by contact. Did you put by any chance yourself as a contact onto that quote and then sent the quote and used the link in the email to YOU to look at the quote after logging out?

No, the quote went directly to the potential client, I was copied on it (via BCC), but have not clicked the link. I did not forward the email to the client myself, he received his copy right from the app.

Here is what I got from the DB, I went a step further and linked the ID with the client_contacts:

 select a.user_id, a.client_contact_id, a.invitation_id, a.activity_type_id, c.first_name from activities a join client_contacts c where a.client_contact_id = AND a.ip like '%.12.20';

Here is the result:

user_id , client_contact_id , invitation_id , activity_type_id , first_name
1 , 122 , 117 , 21 , Roman

The other fields were mostly null, empty, or omitted for privacy.

By the way, both the client and the contact name are currently set to the name of the individual.

Things of note:
My activities table activities does not have contact_id, only client_contact_id. The very first install was 4.xx version, but as far as I remember I’ve started from scratch when switched to v5 beta.
I’ve since did a clean install of V5, but the database was updated, rather then created from scratch.

Is the contact for id 122 the correct contact?

Note: the app uses a key in the URL to determine who clicked the link, if either you or the client click the link it should be tracked as the client.

Yes, id 122 has linked to correct client_contacts with id 122 which is the contact for the client, in this case first name Roman, not Eugene (my name).
The URL for the quote sent to the client did not appear to have any additional key, unless it’s encoded into the quote ID:

Thanks for the details, we’ll look into it

Note: EeQsPc2d52HlBQhP8whrhjW6QhYYjtjs is the key

1 Like


yes we store client/contact/invitation/invoice ids for the viewed activity

By the way, want to confirm that the issue specifically effects the activity tab on the quotes.
Invoice activity correctly shows the client company as the viewed party.

I have the same issue on version v5.5.37-C99, I send it via the web interface and used the $view_button variable to generate the link. How can this happen?