Face groups - vertex groups but for faces?

I’m working on an add-on that requires me to keep in track of certain faces on a per-object basis. Basically what I want is functionality exactly the same as that of vertex groups but for faces. Materials groups do this already, but I can’t use those without messing up material assignments. Still, this gives me hope that there’s some way to keep track of faces in blender, although I haven’t found it yet. Does anyone have any suggestions?

Couldn’t you just add a property to the object. An array of face indicies?

The indexes of the faces change if you remove or add faces to the model, so this approach won’t work. I’d be open to keeping lists of faces in the properties, but I can’t do it with indexes.