Il fiume nasce dai monti di Olveda nel comune di Antas de Ulla, che lascia subito dopo per entrare nel comune di Monterroso. Suoi affluenti principali sono: alla sinistra orografica l'Arnego e il Deza, alla destra, il Pambre, il Furelos e il Sar.
Il suo corso si snoda nelle province di La Coruña e di Pontevedra, sfociando all'altezza di Catoira nel ría di Arousa, dopo aver percorso 132 km. Il suo bacino è di 2764 km², il secondo più importante della Galizia dopo quello del fiume Miño e uno dei più ricchi di salmoni. Le sue acque formano l'invaso di Portodemouros.
Nella fauna piscicola del fiume si trovano anche trote, anguille e lamprede.
Etimologia
Secondo E. Bascuas, "Ulla" è una forma idronoma di paleoeuropeo, derivata dalla radice di origine indoeuropea*wel- cioè "far girare, dare il giro". Questo toponimo figura registrato nell'anno 906 come "(fluvius) Volia", il quale deriverebbe da una forma anteriore *Wulia.[1]