> For the complete documentation index, see [llms.txt](https://docs.struct.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.struct.com/changelog/july-2026.md).

# July 2026

This summer edition highlights easier asset management, more secure webhook authentication and a collection of smaller improvements designed to make everyday work in Struct PIM smoother.

In addition to the visible improvements, we completed numerous bug fixes and smaller stability improvements across Struct PIM.

Many of these changes happen quietly behind the scenes, but together they help make daily work in Struct PIM more stable, predictable and enjoyable.

### Rename asset filenames

If you have ever uploaded an asset only to discover that its filename was unclear, outdated or simply wrong, you no longer have to upload it again just to correct the name.

Select **Rename asset** in left menu in Asset tab.

When renaming you select whether the physical filename used in public URLs should also be updated. Any external systems or websites using the previous URL must be updated.

Using asset import it is also possible to rename multiple files in one go.

<figure><img src="/files/uhidGh2Ly4AXnFoOlXE1" alt="Rename asset"><figcaption><p>Rename asset</p></figcaption></figure>

### OAuth2 authentication for webhooks

Webhooks now support OAuth2 authentication, making it easier to connect Struct PIM securely to external services and APIs.

Struct PIM can automatically request an access token from the configured authorization server and include it when sending webhook requests. This removes the need to manage static authentication tokens manually and makes it possible to integrate with services that require modern token-based authentication.

### Everyday improvements

We also introduced several smaller improvements:

* **Paste Excel cells into search columns as an OR search**\
  Copying multiple cells from Excel and pasting them into a search column now automatically converts the values into an OR filter. For example, copying cells containing `12`, `13` and `14` results in the search value `12||13||14`.
* **Remember selected page size**\
  Struct PIM now remembers your selected page size, so you do not have to choose it again next time you enter Struct PIM.
* **Upload folders using drag and drop**\
  Entire folders containing files can now be uploaded to Media by dragging and dropping them into Struct PIM.
* **Remember Media searches and folder navigation**\
  When opening an asset and returning to the Media grid, your previous search is preserved. Same goes for navigating between Media folders.
* **Support for AVIF images**\
  AVIF is now supported as a regular image format throughout Struct PIM.
* **Language-specific catalogue paths during product import**\
  New language-specific **Full path** fields are available when importing catalogue classifications. The existing **Full path** field continues to use the default language.
* **Edit columns in saved searches**\
  The visible columns of an existing saved search can now be changed without having to recreate the search.
* **Refresh the category tree after changing a dynamic category query**\
  The category tree is now refreshed when a dynamic category query is updated, ensuring that the displayed categories reflect the latest query.
* **Display units for Global List values**\
  Units can now be displayed when they are included as part of a Global List value.

{% hint style="info" %}
**Fun Fact: The Jellyfish That Discovered the Undo Button**

When the “immortal jellyfish” (*Turritopsis dohrnii*) is injured, starving or otherwise dissatisfied with how things are progressing, it can reverse its development and return to an earlier stage of life.\
\
Instead of accepting the inevitable, it transforms back into a juvenile polyp and begins again. The adult version disappears, a previous version takes its place and the incident is quietly closed.\
\
It can still be eaten or killed by disease, so immortality apparently has dependencies.\
\
The secret isn’t living forever. It’s knowing which **version** to return to.\
🪼<br>

**Battle lesson from the Jellyfish That Rejected Mortality:** *Struct PIM helps teams preserve product history and track important changes when something takes an unfortunate turn - because one bad update shouldn’t become your product data’s final resting place.*

P.S. The jellyfish may not be the only one getting a second chance at the right version. 🪼👀📦
{% endhint %}

### Releases in June / July

* [July 30th](/changelog/july-2026/july-30th.md)
* [July 23th](/changelog/july-2026/july-23th.md)
* [July 16th](/changelog/july-2026/july-16th.md)
* [July 15th](/changelog/july-2026/july-15th.md)
* [July 6th](/changelog/july-2026/july-6th.md)
* [June 29th](/changelog/june-2026/june-29th.md)
* [June 25th](/changelog/june-2026/june-25th.md)
* [June 18th](/changelog/june-2026/june-18th.md)
* [June 9th](/changelog/june-2026/june-9th.md)
* [June 3th](/changelog/june-2026/june-3rd.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.struct.com/changelog/july-2026.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
