Tailflow
Skip to article
Browse documentation

Actions

NFT metadata

Use the full NFT metadata output: images, animation, traits, collection details, and marketplace links.

Choose the NFT

This action requires an NFT Transfer (ERC721) trigger. Select Collection and Token id from the event’s fields; defaults use collection_address and token_id.

NFT Transfer is currently preview-only, so you can test this action on examples but should not expect an automatic NFT alert.

NFT Metadata Action Configuration
Path 1
Every event
NFT metadata
Selected action
1NFT metadata
Continue on error
A failure stops later actions on this path.
Example. The two pickers read the collection and token ID from an NFT Transfer example. Test to see the available image, name, and traits.Changes stay in this example. Nothing is saved or sent.

Inspect and use metadata

The action returns the fields below under actions.nft_metadata_1. Use that prefix in templates—for example, {{ actions.nft_metadata_1.collection.symbol }}. If this is the second NFT metadata action on the same path, use nft_metadata_2 instead.

The field names below are the output available in Tailflow. Some values may be null, false, or empty even when the lookup succeeds. Copy paths from the Output panel after a test and check the actual token before relying on an optional value.

NFT Metadata Test Output
NFT metadata
Test run
Output
name
Example #44
token_id
44
collection_name
Example Collection
image
https://example.com/nft/44.png
animation_url
null
Example. Check Output for the token’s actual values. Optional fields may be null; use the displayed output prefix when inserting a value.Changes stay in this example. Nothing is saved or sent.
Message template
{{ actions.nft_metadata_1.name }} transferred
{{ actions.nft_metadata_1.image }}
{{ actions.nft_metadata_1.opensea_url }}

Test the selection

Test run resolves metadata and displays the actual output. Check the token image and ID before using its fields. A block batch contains several token IDs; the default single-token selection does not describe the whole batch.

Collection information describes the collection; it does not describe a payment for this particular transfer. Read sale_price, sale_currency, and sale_price_usd from the triggering event for recognized sale information.

NFT Metadata Test Output
NFT metadata
Test run
Output
name
Example #44
token_id
44
collection_name
Example Collection
image
https://example.com/nft/44.png
animation_url
null
Example. Check Output for the token’s actual values. Optional fields may be null; use the displayed output prefix when inserting a value.Changes stay in this example. Nothing is saved or sent.

NFT identity and links

String means text. Token IDs are returned as strings so large IDs retain every digit. Nullable fields use null when no value is available.

NFT identity and links output fields
Field · typeMeaning and availability
namestring | nullToken name. When it has no name, a collection name plus token ID may be used.
descriptionstring | nullToken description when available; this can fall back to a collection description.
collection_namestring | nullCollection name, also available as collection.name.
token_idstringThe NFT’s token ID, such as "44".
token_type"ERC721" | "ERC1155" | nullThe token standard when known. The action currently requires an ERC721 Transfer trigger; this field does not add an ERC1155 trigger.
token_uristring | nullLocation of the token’s metadata document. This is not necessarily an image URL.
chain_idnumberNumeric chain identifier, such as 1 for Ethereum.
chain_titlestringReadable chain label, such as "ethereum" or "base".
opensea_urlstring | nullLink to the NFT on OpenSea where supported. A link does not mean the NFT is listed for sale.

Images and animation

Use image for the usual message or preview. The other fields let you choose a specific format or size. A URL is a link to media, not an attached file; whether it displays inline depends on the destination.

Not every NFT has every image variant. Check for null before choosing a PNG, thumbnail, or animation. content_type describes the returned image and does not identify the animation format.

Images and animation output fields
Field · typeMeaning and availability
imagestring | nullPreferred display image. Usually the same as image_cached; a PNG or original image may be used when that version is unavailable.
image_cachedstring | nullAlternate hosted copy of the image, when available. Useful when you need this particular display URL.
image_pngstring | nullPNG version of the image, when available.
image_thumbnailstring | nullSmaller image intended for compact previews.
image_originalstring | nullOriginal image location in a usable URL form where possible. The untouched value can also appear inside metadata.image.
content_typestring | nullImage media type, such as "image/png" or "image/jpeg".
animation_urlstring | nullAnimation or other rich-media URL, when the NFT provides one. It may not render in a messaging client.

Traits and the original metadata

attributes is the normalized trait list. metadata is the original token metadata document, not the complete response from a metadata service. Its keys are defined by the collection, so there is no universal list of every field inside it.

Use attributes.0.trait_type and attributes.0.value to read the first trait. Array positions start at zero, and trait order can vary between tokens. Use Transform to find a trait by its name rather than assuming a fixed position.

Traits and the original metadata output fields
Field · typeMeaning and availability
attributesarrayList of traits. Empty when no recognizable traits are available.
attributes.<index>.trait_typestringName of a trait, such as "Background".
attributes.<index>.valuestring | number | boolean | nullTrait value. Complex values are represented as text in this normalized list.
metadataobject | nullOriginal metadata document. It can include name, description, image, animation_url, external_url, attributes, traits, and collection-specific fields.
metadata.<key>variesA custom metadata field. Nested values keep their original structure; URLs here can use forms that a messaging client cannot display directly.
Transform Configuration for NFT Traits
NFT metadata · Output
attributes.0.trait_type
Background
attributes.0.value
Blue
Transform
Example. Use Transform after NFT metadata to find Background regardless of its position. A missing trait returns the fallback text.Changes stay in this example. Nothing is saved or sent.
JavaScript
const traits = input.actions.nft_metadata_1.attributes;
return {
  background: traits.find(trait => trait.trait_type === "Background")?.value ?? "Not provided"
};

Collection details

collection is an object with the fields below. collection.floor_price is a collection-level estimate, not this token’s value or sale price. The output does not include a currency or timestamp for that number, so do not label it USD or ETH, or present it as a current quote, without separately confirming its units and freshness.

verified and is_spam are flags, not guarantees. False can mean no positive flag was available; it does not establish that a collection was reviewed, unverified, or safe.

Collection details output fields
Field · typeMeaning and availability
collectionobjectCollection identity, presentation fields, marketplace information, and flags.
collection.addressstringCollection contract address on the event’s chain.
collection.namestring | nullCollection name; also returned as collection_name.
collection.symbolstring | nullCollection’s contract symbol.
collection.slugstring | nullCollection identifier used in a marketplace URL, when known.
collection.external_urlstring | nullCollection’s external website, when provided.
collection.imagestring | nullCollection-level image. This is different from the individual NFT’s image.
collection.floor_pricenumber | nullReported collection floor. No currency or observation timestamp is supplied alongside this value.
collection.verifiedbooleanTrue when a positive marketplace verification flag is available.
collection.is_spambooleanTrue when the collection has been flagged as spam.

Example metadata output

This fictional example shows all NFT and collection fields, including optional values. The example.com addresses are placeholders, not real NFT media. The separate diagnostic source field is omitted from this example; it is described below.

JSON
{
  "image": "https://example.com/nft/44/display.png",
  "name": "Example #44",
  "description": "An illustrated landscape.",
  "collection_name": "Example Collection",
  "token_uri": "https://example.com/nft/44/metadata.json",
  "metadata": {
    "name": "Example #44",
    "description": "An illustrated landscape.",
    "image": "https://example.com/nft/44/original.png",
    "attributes": [
      {
        "trait_type": "Background",
        "value": "Blue"
      },
      {
        "trait_type": "Edition",
        "value": 44
      }
    ],
    "artist": "Example Artist"
  },
  "image_cached": "https://example.com/nft/44/display.png",
  "image_png": "https://example.com/nft/44/converted.png",
  "image_thumbnail": "https://example.com/nft/44/thumbnail.png",
  "image_original": "https://example.com/nft/44/original.png",
  "content_type": "image/png",
  "animation_url": null,
  "attributes": [
    {
      "trait_type": "Background",
      "value": "Blue"
    },
    {
      "trait_type": "Edition",
      "value": 44
    }
  ],
  "token_id": "44",
  "token_type": "ERC721",
  "collection": {
    "address": "0x1111111111111111111111111111111111111111",
    "name": "Example Collection",
    "symbol": "EXAMPLE",
    "slug": "example-collection",
    "external_url": "https://example.com",
    "image": "https://example.com/collection.png",
    "floor_price": null,
    "verified": false,
    "is_spam": false
  },
  "chain_id": 1,
  "chain_title": "ethereum",
  "opensea_url": "https://opensea.io/item/ethereum/0x1111111111111111111111111111111111111111/44"
}

Use metadata in a message

Place the message after NFT metadata on the same path. These templates combine the NFT’s display fields with sender and recipient fields from the original transfer. A metadata image link is not an attachment; Post to X still supports text only.

Email Configuration with NFT Metadata
Path 1
1 · NFT metadataFetch token details
2 · EmailSend the message
Email
Example. Place Email after NFT metadata. The image value is a URL in the message, not an attachment.Changes stay in this example. Nothing is saved or sent.
Message template
{{ actions.nft_metadata_1.name }} transferred
Collection: {{ actions.nft_metadata_1.collection_name }}
Token: {{ actions.nft_metadata_1.token_id }}
From: {{ event.from_address }}
To: {{ event.to_address }}
{{ actions.nft_metadata_1.image }}
{{ actions.nft_metadata_1.opensea_url }}

Optional values and output boundaries

A successful lookup does not guarantee a thumbnail, animation, floor price, or every trait. A missing price is null, not zero. Some NFTs provide only basic identity and media fields.

The action does not return a complete ownership history, rarity ranking, live listing, last-sale record, or every field offered by an external metadata service. Collection-specific extras are accessible only when they are present in metadata.

Use the Output panel after Test run to verify exactly what your NFT provides. Historical metadata or mutable NFT artwork may change; this action’s result is not a guarantee that content stays the same forever.

Optional values and output boundaries output fields
Field · typeMeaning and availability
sourcestringDiagnostic origin label that may appear in the action output. It is not a property of the NFT and should not be used as NFT content or to infer freshness.
NFT Metadata Test Output
NFT metadata
Test run
Output
name
Example #44
token_id
44
collection_name
Example Collection
image
https://example.com/nft/44.png
animation_url
null
Example. Check Output for the token’s actual values. Optional fields may be null; use the displayed output prefix when inserting a value.Changes stay in this example. Nothing is saved or sent.