Set custom field true email link
Is [updating an entry] possible with just a twig template?


No. You'll need to write a plugin.


  How can I [let users update an entry via an URL]


There's a few ways to approach this. My recommendation would be to have your plugin expose a site route pointing to a controller method. That controller method would then take care of updating the entry, and possibly redirect the user back to the entry URI.

Assuming you want to send your users links that look like http://example.com/status/1234/live, here's what the route could look like:

'status/(?P&lt;entryId&gt;\d+)/(?P&lt;status&gt;[-\w]+)' =&gt; array( 'action' =&gt; 'myPlugin/status/updateStatus' )


With the above route, all matching URLs will be pointed to a actionUpdateStatus() action method in a controller named MyPlugin_StatusController. The controller would then need to handle the following:


Update the status for the entry matching the $entryId route variable (look at Working with Elements for ways to approach this
(Presumably) redirect the request back to the entry URI



  How can I do this in a safe way?


The URLs should probably include some sort of unique key (either as another route variable, or as a query string variable) to verify the request. For example, you could opt to include a hash of the author's email address; the controller could then decrypt the hash before updating the entry, verifying that the given email address matches the one on file for the entry's author.

Additionally, you should probably verify that the status route variable matches with a set of allowed statuses, such as "live", "pending" etc.