# Tracking Modifications

Warning

Tracking changes adds significant overhead. In most cases, you’ll be better served by using SQLAlchemy events directly.

Flask-SQLAlchemy can set up its session to track inserts, updates, and deletes for models, then send a Blinker signal with a list of these changes either before or during calls to `session.flush()` and `session.commit()`.

To enable this feature, set `SQLALCHEMY_TRACK_MODIFICATIONS` in the Flask app config. Then add a listener to `models_committed` (emitted after the commit) or `before_models_committed` (emitted before the commit).

    from flask_sqlalchemy.track_modifications import models_committed

    def get_modifications(sender: Flask, changes: list[tuple[t.Any, str]]) -> None:
        ...

    models_committed.connect(get_modifications)