---
title: "Function: Advanced TOUCH Operation"
description: Perform the Advanced TOUCH operation where Eventing interacts with
  the Data Service.
pubDate: 2026-08-17T09:53:44.266Z
antora:
  editUrl: https://github.com/couchbaselabs/docs-devex/edit/release/8.0/modules/eventing/pages/eventing-handler-advancedTouchOp.adoc
  xref: xref:server:eventing:eventing-handler-advancedTouchOp.adoc[]
---

[Consult the llms.txt file for a full list of contents](/llms.txt)
[View original HTML](/server/current/eventing/eventing-handler-advancedTouchOp.html)

# Function: Advanced TOUCH Operation

Perform the Advanced TOUCH operation where Eventing interacts with the Data Service.

The `advancedTouchOp` function:

* Performs the Advanced TOUCH operation
* Requires Eventing Storage (or a metadata collection) and a source collection
* Requires a binding of type `bucket alias`
* Operates on any mutation where the `meta.id` or KEY starts with `ten_seconds:`
* Does not require that you send the document back to the Data Service to update the TTL

For more information about the Advanced TOUCH operation, see [Advanced TOUCH Operation](eventing-advanced-keyspace-accessors.md#advanced-touch-op).

* advancedTouchOp
* Input Data
* Output Data

```javascript
// Configure the settings for the advancedTouchOp function as follows:
//
// Version 7.6+
//   "Function Scope"
//     *.* (or try bulk.data if non-privileged)
//   "Listen to Location"
//     bulk.data.source
//   "Eventing Storage"
//     rr100.eventing.metadata
//   Binding(s)
//    1. "binding type", "alias name...", "bucket.scope.collection", "Access"
//       "bucket alias", "src_col",       "bulk.data.source",        "read and write"

function OnUpdate(doc, meta) {
    if (! meta.id.startsWith("ten_seconds:") ) return;

    log('input meta', meta);
    log('input doc', doc);

    var expiry = new Date();
    expiry.setSeconds(expiry.getSeconds() + 10);

    var req = {"id": meta.id, "expiry_date": expiry};
    var result = couchbase.touch(src_col, req);
    if (result.success) {
        log('success adv. touch: result', result);
    } else {
        log('failure adv. touch: id', req.id, 'result', result);
    }
}
```

```json
INPUT: KEY ten_seconds:001

{
    "id": "ten_seconds:001",
    "type": "Auto-deletes in 10 seconds. Keep refreshing to retrieve documents."
}
```

```json
2024-03-15T11:57:51.103-07:00 [INFO] "input doc"
{
  "id": "ten_seconds:001",
  "type": "Auto-deletes in 10 seconds. Keep refreshing to retrieve documents."
}

2024-03-15T11:57:51.103-07:00 [INFO] "input meta"
{
  "cas": "1710529071079817216",
  "id": "ten_seconds:001",
  "expiration": 0,
  "flags": 33554438,
  "vb": 679,
  "seq": 102,
  "datatype": "json",
  "keyspace":
  {
    "bucket_name": "travel-sample",
    "scope_name": "tenant_agent_00",
    "collection_name": "bookings"
  },
  "cid": 18
}

2024-03-15T11:57:51.108-07:00 [INFO] "success adv. touch: result"
{
  "meta":
  {
    "id": "ten_seconds:001",
    "cas": "1710529071107276800"
  },
  "success": true
}

2024-03-15T11:58:03.302-07:00 [INFO] "Doc deleted/expired" "ten_seconds:001"
{
  "expired": true
}
```