You understand correct. Op_return is for data only and was added as a compromise for people that kept adding data in other more harmful ways.
Discussion
So I see how this could be useful for some cases. Would be nice to have some kind of basic structure like protocol:data to let them through. I just don't want to have to buy new 1TB every year so others can store their "I was here" graffiti on my node